


在信息检索领域,搜索技术的不断演变从根本上改变了我们获取信息的方式。传统的模糊搜索(Fuzzy Search)在应对拼写错误、不精确匹配时已经表现出色,但面对大规模的非结构化数据和用户意图理解时,语义搜索展示出了更高的效率。
有一个非常适用于初学者使用的向量数据库 Chroma ,它专门用于存储、索引和搜索高维向量数据,基于大模型的语义搜索框架,能够以更精确、更智能的方式理解查询背后的含义。这篇文章将深入探讨 Chroma 的原理、应用场景及其与传统搜索的区别,帮助大家更全面地认识语义搜索的前景。
语义搜索利用自然语言处理(Natural Language Processing , NLP)技术,不仅仅匹配关键词,而是通过理解句子结构和上下文来检索与用户查询相关的内容。这种方式尤其适合处理大模型生成的知识库、对话系统等复杂数据源,让机器能够更自然地与人类互动。
Chroma 正是这样一种语义搜索框架,它利用了大模型生成的嵌入(embedding)向量来表示词语或短语的语义,使得搜索不再依赖关键词匹配,而是基于内容相似性和语义关联来完成。

Chroma 语义搜索基于向量嵌入技术,将文本或查询映射到多维向量空间,以下是其基本实现原理:
这里用大白话给初学者简单解释一下原理:向量嵌入的本质就是将文本内容映射成一个向量,这个向量往往高达上千维(所以才能处理海量数据),而两个向量之间的距离越近(常用余弦相似度或欧氏距离来定量计算向量距离),就代表这两个向量所代表的文本语义越接近。 余弦相似度:余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。 欧几里得距离:也叫欧氏距离,在n维空间中两个点之间的真实距离。这个概念是由古希腊数学家欧几里得提出的,用于计算在欧几里得空间中两点间的直线距离。高中的小同学应该还记得计算两点间的距离公式就是用的欧氏距离。拓展到n维就是:

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

Chroma官方文档:Chroma Docs
也就是说需要理解搜索的语义而并非简单的获取文本高匹配度的词条,就可以使用Chroma。
首先安装 Chroma 及其依赖的 NLP 模型,确保环境中可以运行预训练的大模型:
pip install chroma
pip install transformers将文本数据转化为向量并创建索引,这些向量将用于语义相似度的计算:
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)使用查询文本生成嵌入,并根据相似度查找最相关的内容:
query = "查询文本"
query_embedding = model.encode(query)
results = chroma.search(query_embedding)
for result in results:
print(result)查询数据改成前后端通信获取查询文本,再将查询结果通过响应体返回到前端,就能实现web页面的语义查询了
模糊搜索通过编辑距离或相似性算法来识别拼写错误和相似词语,允许用户在搜索时输入不完全准确或拼写错误的关键词,系统会返回与这些关键词相似或相关的结果。
优势:
局限性:
优点:
缺点:
比较维度 | 传统模糊搜索 | Chroma 语义搜索 |
|---|---|---|
原理 | 关键词匹配,编辑距离算法 | 向量嵌入,语义相似性 |
理解能力 | 无法理解上下文 | 深度语义理解 |
性能 | 数据量大时性能下降 | 适合大规模数据处理 |
应用场景 | 精准匹配的场景 | 复杂意图和内容查询 |
拓展性 | 适合结构化数据 | 更适合非结构化数据 |
Chroma 提供了一种新型的搜索方式,通过语义搜索替代传统的关键词匹配,大大提高了信息检索的精度和用户体验。在信息爆炸的时代,语义搜索的出现满足了人们对高效信息获取的需求。随着大模型的发展,Chroma 等技术将会进一步提升信息检索的智能化水平,为各类应用场景带来更多可能性。
只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~