从模糊搜索到语义搜索的进化之路——探索 Chroma 在大模型中的应用价值

简介: Chroma 提供了一种新型的搜索方式,通过语义搜索替代传统的关键词匹配,大大提高了信息检索的精度和用户体验。在信息爆炸的时代,语义搜索的出现满足了人们对高效信息获取的需求。随着大模型的发展,Chroma 等技术将会进一步提升信息检索的智能化水平,为各类应用场景带来更多可能性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~



作者:watermelo37

涉及领域:Vue、SpingBoot、Docker、LLM、python等

---------------------------------------------------------------------

温柔地对待温柔的人,包容的三观就是最大的温柔。

---------------------------------------------------------------------

image.gif 编辑

从模糊搜索到语义搜索的进化之路——探索 Chroma 在大模型中的应用价值

image.gif 编辑

一、引言

       在信息检索领域,搜索技术的不断演变从根本上改变了我们获取信息的方式。传统的模糊搜索(Fuzzy Search)在应对拼写错误、不精确匹配时已经表现出色,但面对大规模的非结构化数据和用户意图理解时,语义搜索展示出了更高的效率。

       有一个非常适用于初学者使用的向量数据库 Chroma ,它专门用于存储、索引和搜索高维向量数据,基于大模型的语义搜索框架,能够以更精确、更智能的方式理解查询背后的含义。这篇文章将深入探讨 Chroma 的原理、应用场景及其与传统搜索的区别,帮助大家更全面地认识语义搜索的前景。

二、实现语义搜索的数据库 Chroma

1、语义搜索是什么

       语义搜索利用自然语言处理(Natural Language Processing , NLP)技术,不仅仅匹配关键词,而是通过理解句子结构和上下文来检索与用户查询相关的内容。这种方式尤其适合处理大模型生成的知识库、对话系统等复杂数据源,让机器能够更自然地与人类互动。

       Chroma 正是这样一种语义搜索框架,它利用了大模型生成的嵌入(embedding)向量来表示词语或短语的语义,使得搜索不再依赖关键词匹配,而是基于内容相似性和语义关联来完成。

image.gif 编辑

2、Chroma 语义搜索的原理

       Chroma 语义搜索基于向量嵌入技术,将文本或查询映射到多维向量空间,以下是其基本实现原理:

  1. 文本嵌入生成:Chroma 使用大模型将文本转化为嵌入向量,将语义上相似的词语映射到更接近的位置。
  2. 向量相似度搜索:利用余弦相似度或欧几里得距离在向量空间中查找相似的嵌入,从而实现语义相关的内容推荐。
  3. 语义优化与索引:Chroma 在存储和索引上进行了优化,可以快速处理大规模数据,支持动态扩展和高并发访问。
  4. 实时更新:Chroma 可以实时更新语义索引,使系统可以持续接纳新信息、适应动态的业务需求。

       这里用大白话给初学者简单解释一下原理:向量嵌入的本质就是将文本内容映射成一个向量,这个向量往往高达上千维(所以才能处理海量数据),而两个向量之间的距离越近(常用余弦相似度或欧氏距离来定量计算向量距离),就代表这两个向量所代表的文本语义越接近。

       余弦相似度:余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。

       欧几里得距离:也叫欧氏距离,在‌n维空间中两个点之间的真实距离。这个概念是由古希腊数学家欧几里得提出的,用于计算在欧几里得空间中两点间的直线距离。高中的小同学应该还记得计算两点间的距离公式就是用的欧氏距离。拓展到n维就是:

image.gif 编辑

(xi,yi代表空间两个点分别在 i 轴上的两个坐标)

三、如何在项目中应用 Chroma

image.gif 编辑

       Chroma官方文档:Chroma Docs

1、Chroma 的实际应用场景

  • 知识库查询:在大型知识库中,Chroma 可以通过理解语义来回答用户的问题,不局限于匹配关键词,而是综合上下文和内容理解。
  • 智能客服和对话系统:Chroma 支持多轮对话上下文的保持,使对话系统能够理解用户的真实意图,从而给出更精准的回答。
  • 内容推荐:Chroma 可基于用户兴趣和行为记录生成语义嵌入,并通过相似度计算为用户提供个性化推荐内容。

       也就是说需要理解搜索的语义而并非简单的获取文本高匹配度的词条,就可以使用Chroma。

2、安装Chroma(python环境)

       首先安装 Chroma 及其依赖的 NLP 模型,确保环境中可以运行预训练的大模型:

pip install chroma
pip install transformers

image.gif

3、创建嵌入索引

       将文本数据转化为向量并创建索引,这些向量将用于语义相似度的计算:

from chroma import Chroma
from transformers import AutoTokenizer, AutoModel
# 加载模型
tokenizer = AutoTokenizer.from_pretrained("模型名称")
model = AutoModel.from_pretrained("模型名称")
chroma = Chroma()
# 创建嵌入
texts = ["文本1", "文本2", "文本3"]
embeddings = [model.encode(text) for text in texts]
chroma.index(embeddings)

image.gif

4、查询数据

       使用查询文本生成嵌入,并根据相似度查找最相关的内容:

query = "查询文本"
query_embedding = model.encode(query)
results = chroma.search(query_embedding)
for result in results:
    print(result)

image.gif

       查询数据改成前后端通信获取查询文本,再将查询结果通过响应体返回到前端,就能实现web页面的语义查询了

四、语义搜索与传统模糊搜索之间的优劣

1、模糊搜索

       模糊搜索通过编辑距离或相似性算法来识别拼写错误和相似词语,允许用户在搜索时输入不完全准确或拼写错误的关键词,系统会返回与这些关键词相似或相关的结果。

       优势:

  • 高效处理拼写错误和不完整的词。
  • 在小数据集或特定字段(如名称、产品编号)查询中表现良好。

       局限性:

  • 语义欠缺:模糊搜索无法识别词语背后的语义。例如,“气候变化”和“全球变暖”在模糊搜索中并不会被认为是相关的。
  • 扩展性差:面对长文本或复杂的自然语言表达时,模糊搜索难以理解查询意图。
  • 性能瓶颈:随着数据量增加,模糊搜索的处理能力会逐渐下降。

2、语义搜索

       优点:

  • 语义理解:能够更准确地理解用户查询的语义,提高用户体验。
  • 适应性强:可以在大规模非结构化数据中进行高效检索。
  • 动态扩展:可以随数据变化动态更新嵌入。

       缺点:

  • 计算资源需求大:嵌入生成和索引需要较高的计算资源。
  • 模型训练依赖:Chroma 效果取决于大模型的训练质量,较少适用于小型项目或低计算资源场景。

3、Chroma 语义搜索与传统搜索的对比

比较维度 传统模糊搜索 Chroma 语义搜索
原理 关键词匹配,编辑距离算法 向量嵌入,语义相似性
理解能力 无法理解上下文 深度语义理解
性能 数据量大时性能下降 适合大规模数据处理
应用场景 精准匹配的场景 复杂意图和内容查询
拓展性 适合结构化数据 更适合非结构化数据

五、总结

       Chroma 提供了一种新型的搜索方式,通过语义搜索替代传统的关键词匹配,大大提高了信息检索的精度和用户体验。在信息爆炸的时代,语义搜索的出现满足了人们对高效信息获取的需求。随着大模型的发展,Chroma 等技术将会进一步提升信息检索的智能化水平,为各类应用场景带来更多可能性。

       只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

       其他热门文章,请关注:

       你真的会使用Vue3的onMounted钩子函数吗?Vue3中onMounted的用法详解

       通过array.filter()实现数组的数据筛选、数据清洗和链式调用

       极致的灵活度满足工程美学:用Vue Flow绘制一个完美流程图

       el-table实现动态数据的实时排序,一篇文章讲清楚elementui的表格排序功能

       TreeSize:免费的磁盘清理与管理神器,解决C盘爆满的燃眉之急

       在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境

       Dockerfile全面指南:从基础到进阶,掌握容器化构建的核心工具

       MutationObserver详解+案例——深入理解 JavaScript 中的 MutationObserver

       JavaScript中闭包详解+举例,闭包的各种实践场景:高级技巧与实用指南

       干货含源码!如何用Java后端操作Docker(命令行篇)

       Idea启动SpringBoot程序报错:Port 8082 was already in use;端口冲突的原理与解决方案

       PDF预览:利用vue3-pdf-app实现前端PDF在线展示

相关文章
|
2月前
|
人工智能 自然语言处理 开发工具
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
本文介绍统一多模态 Transformer(UMT)在跨模态表示学习中的应用与优化,涵盖模型架构、实现细节与实验效果,探讨其在图文检索、图像生成等任务中的卓越性能。
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
|
3月前
|
自然语言处理 前端开发 Java
JBoltAI 框架完整实操案例 在 Java 生态中快速构建大模型应用全流程实战指南
本案例基于JBoltAI框架,展示如何快速构建Java生态中的大模型应用——智能客服系统。系统面向电商平台,具备自动回答常见问题、意图识别、多轮对话理解及复杂问题转接人工等功能。采用Spring Boot+JBoltAI架构,集成向量数据库与大模型(如文心一言或通义千问)。内容涵盖需求分析、环境搭建、代码实现(知识库管理、核心服务、REST API)、前端界面开发及部署测试全流程,助你高效掌握大模型应用开发。
400 5
|
3月前
|
传感器 人工智能 监控
通义灵码智能体模式在企业级开发中的应用:以云效DevOps自动化流程为例
通义灵码智能体模式具备语义理解、任务闭环与环境感知能力,结合云效DevOps实现CI/CD异常修复、测试覆盖与配置合规检查,大幅提升研发效率与质量。
165 0
|
9天前
|
人工智能 自然语言处理 算法
现代AI工具深度解析:从GPT到多模态的技术革命与实战应用
蒋星熠Jaxonic,AI技术探索者,深耕代码生成、多模态AI与提示词工程。分享AI工具架构、实战应用与优化策略,助力开发者提升效率,共赴智能编程新纪元。
64 4
|
12天前
|
人工智能 算法 数据挖掘
AI Agent工作流实用手册:5种常见模式的实现与应用,助力生产环境稳定性
本文介绍了五种AI Agent结构化工作流模式,帮助解决传统提示词方式在生产环境中输出不稳定、质量不可控的问题。通过串行链式处理、智能路由、并行处理、编排器-工作器架构和评估器-优化器循环,可提升任务执行效率、资源利用和输出质量,适用于复杂、高要求的AI应用。
187 0
AI Agent工作流实用手册:5种常见模式的实现与应用,助力生产环境稳定性
|
20天前
|
存储 缓存 负载均衡
LLM推理成本直降60%:PD分离在大模型商业化中的关键价值
在LLM推理中,Prefill(计算密集)与Decode(访存密集)阶段特性不同,分离计算可提升资源利用率。本文详解vLLM框架中的PD分离实现及局限,并分析Dynamo、Mooncake、SGLang等主流方案,探讨KV缓存、传输机制与调度策略,助力LLM推理优化。建议点赞收藏,便于后续查阅。
408 1
|
2月前
|
机器学习/深度学习 人工智能 算法
AI-Compass RLHF人类反馈强化学习技术栈:集成TRL、OpenRLHF、veRL等框架,涵盖PPO、DPO算法实现大模型人类价值对齐
AI-Compass RLHF人类反馈强化学习技术栈:集成TRL、OpenRLHF、veRL等框架,涵盖PPO、DPO算法实现大模型人类价值对齐
 AI-Compass RLHF人类反馈强化学习技术栈:集成TRL、OpenRLHF、veRL等框架,涵盖PPO、DPO算法实现大模型人类价值对齐
|
1月前
|
存储 人工智能 Serverless
AI Agent 运行时相比传统应用有什么不同:百家企业 AI 实践观察(二)
本文深入探讨了AI Agent运行时的核心挑战及解决方案,分析了AI Agent从理论走向实践过程中所面临的动态推理、资源成本与安全风险等问题,并详细介绍了阿里云函数计算FC如何作为AI Agent运行时及沙箱环境(Sandbox),有效应对脉冲式计算需求、突发性负载、数据隔离与会话亲和性等挑战。同时,文章结合典型场景,展示了函数计算FC在编码式与流程式AI Agent构建中的优势,涵盖Chat AI Agent、营销素材组装、仿真训练等应用,为AI Agent的高效、安全运行提供了完整的技术路径。
243 2

热门文章

最新文章