使用RAG构建高质量知识库第三部分数据嵌入
知识库数据经清洗分块后需向量化并存入向量数据库。向量化依赖嵌入模型生成密集向量或稀疏向量,语义检索基于密集向量,全文检索基于稀疏向量(如BM25算法),混合检索结合两者以提升召回精度。常用嵌入模型包括BGE-M3、OpenAI等,向量数据库有Milvus、Chroma等。
书接上文,咱们接着聊数据嵌入和向量化。知识库的数据经过清洗、分块之后,下一步就是向量化,然后存入向量数据库。完整的RAG流程,前面已经画过图了,这里不再赘述。
先把话说明白:向量到底是什么?密集向量的维度通常在64到1536之间,维度越多,能表达的语义越精细,但存储和计算的成本也会直线上升。来,看个直观的——
# 原文
“AI-Tech实验室”
# 密集向量
[
0.11878310581111173,
0.9694947902934701,
0.16443679307243175,
0.5484226189097237,
0.9839246709011924,
0.5178387104937776,
0.8716926129208069,
0.5616972243831446,
...
]
为啥要向量化
传统的数据检索,核心是关键字匹配。但它的精度有限,遇到近义词、同义词就捉襟见肘了。举个例子你就明白了——
# 原文
北京紫禁城中有大约186万件文物。
# 关键词检索
Q: 紫禁城有多少文物
A: 186万件
# 近义词、同义词检索效果较差
Q: 故宫有多少文物
A:不知道
换个问法,传统搜索策略基本就失灵了。而向量在存储中的样子大概是这样——语义上越相近的内容,它们在向量空间里的距离就越近。通过向量检索,我们能极大地提升数据召回的精度。
如何向量化
这通常需要用到 Embedding Model (嵌入模型)。它也是一种预训练模型,通过大量训练,能理解词与词之间的关联关系。
市面上常见的嵌入模型有这些:
| 嵌入模型 | 介绍 |
|---|---|
| BGE-M3 | 密集向量和稀疏向量嵌入 |
| OpenAI | 密集向量嵌入 |
| SPLADE | 稀疏向量嵌入 |
| Jina | 密集向量嵌入 |
| mGTE | 密集向量和稀疏向量嵌入 |
国内各大AI厂商也有自己的嵌入模型,比如Qwen3-Embedding、Doubao-embedding。通过本地部署或者调用API的方式,就能直接使用。
import OpenAI from 'openai';
const openai = new OpenAI({
apiKey: "sk-xxxxxx",
baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',
});
const embedding = async (text) => {
const response = await openai.embeddings.create({
model: "text-embedding-v4",
input: text,
});
return response.data[0].embedding;
};
向量化之后,数据要存进向量数据库。常见的向量数据库有:
| 数据库 | 介绍 |
|---|---|
| Redis | 通过RedisSearch 模块,原生支持向量检索 |
| Qdrant | 面向下一代的生成式AI向量数据库,具备云原生特性 |
| Milvus | 为GenAI应用程序构建的开源向量数据库 |
| Chroma | 开源向量数据库,可快速基于Python和Ja vaScript构建内存级LLM应用 |
| Pinecone | 全托管向量存储与检索服务 |
| wea viate | 开源矢量数据库,具备健壮、可拓展、云原生、快速等特性 |
如果是个人本地学习,建议直接用Milvus Lite,轻量又方便。
密集向量与稀疏向量
你在使用Coze、Dify、FastGPT这类智能体平台搭建知识库时,常常会遇到“全文检索”、“混合检索”、“语义检索”这些名词。它们到底是什么意思?
稀疏向量
上面提到的向量示例和嵌入模型,基本上都属于密集向量。而稀疏向量的特点是:大多数维度值为0,只有少数维度有值,看起来“稀疏”——
# 密集向量
# 所有维度连续有值
[
0.11878310581111173,
0.9694947902934701,
...
]
# 稀疏向量
# 大多数维度为0,只有少数维度有值
[{
34:0.5,
444:0.6,
5364:0.4
}]
TF-IDF / BM25算法
TF-IDF算法通过对全文进行统计,最终把文档转化为一组稀疏向量。其中:
TF(词频):某个词在全文里出现的次数,次数越多,TF越大。IDF(逆向文档频率):某个词出现的频率越高,IDF权重越低。比如“好的”、“没问题”这类词,虽然频繁出现,但实际检索意义不大;而那些出现频率低的词,反而更有可能是真正的关键词。
BM25是TF-IDF的演进算法,它本质上是一种通过统计公式计算关键词关联度的算法。说得直白点:BM25其实并不“理解”文章的意思,而是通过某种统计规律“猜出”查询关键词和原文之间的关联关系。平时大家见到的“全文检索”,大概率就是基于BM25的稀疏向量检索方法。
SPLADE
SPLADE Model也是一个预训练模型。它利用现有的语言模型,基于人工标注的搜索/排序数据进行训练。因此,在通用数据处理上,SPLADE一定比简单的BM25表现好。但这里有个关键点:咱们制作知识库,用的往往是企业内部私有知识,跟SPLADE的预训练数据并不一致。所以效果也不一定就比BM25更好——具体用哪种策略,得看实际业务场景。
混合检索、全文检索、语义检索
读到这儿,你应该能猜个八九不离十了:
- 语义检索:对应的是密集向量检索(Dense Embedding)
- 全文检索:对应的是稀疏向量检索(Sparse Embedding)
- 混合检索:是以上两种模式的结合方案。
举个例子
现在有一个关于“雪花啤酒”的知识库,分段存储在向量数据库里——
# 知识库分段内容
[{
name: '对于消费者而言,雪花代表了高性价比和多元化的选择,从日常佐餐到潮流聚会均可覆盖。'
},{
name: '国际:百威、科罗娜、喜力(在华通过雪花渠道销售)。'
},{
name: '品牌历史起源于1957年成立的沈阳啤酒厂。1994年华润收购沈阳啤酒厂,并与SABMiller合作成立华润雪花,正式进入啤酒行业。'
},
{
...
}]
# Step1: 文本嵌入
# 使用Embedding Model + SPLADE进行向量化嵌入
# vector是密集向量
# sparse是稀疏向量
[
{
name: '对于消费者而言,雪花代表了高性价比和多元化的选择,从日常佐餐到潮流聚会均可覆盖。',
vector: [
0.11878310581111173,
0.9694947902934701,
...
],
sparse: [{
34: 0.32,
67: 0.64
...
}]
},
{
name: '国际:百威、科罗娜、喜力(在华通过雪花渠道销售)。',
vector: [
0.9992090731236536,
0.8248790611809487,
...
],
sparse: [{
342: 0.42,
679: 0.641
...
}]
},
{
name: '品牌历史起源于1957年成立的沈阳啤酒厂。1994年华润收购沈阳啤酒厂,并与SABMiller合作成立华润雪花,正式进入啤酒行业。',
vector: [
0.8761291569818763,
0.07127366044153227,
...
],
sparse: [{
3: 0.21,
437: 0.22
...
}]
},
];
# 用户问题
雪花啤酒成立时间?
# Step2: 查询问题向量化
{
name: '雪花啤酒成立时间?',
vector: [
0.3761291569818763,
0.12127366044153227,
...
],
sparse: [{
5: 0.41,
35: 0.62
...
}]
}
# Step3: 语义检索
# 分数越低代表距离越近,相关度越高
{
score: 0.512241005897522,
name: '雪花啤酒(Snow Beer)是中国最知名的啤酒品牌之一,隶属于华润雪花啤酒(中国)有限公司,由华润集团与全球啤酒巨头SABMiller合资创立。'
},
{
score: 0.5282324552536011,
name: '雪花啤酒以“年轻化、多元化”为品牌战略,主要产品包括主流系列、高端系列及国际品牌。'
},
{
score: 0.5613145232200623,
name: '品牌历史起源于1957年成立的沈阳啤酒厂。1994年华润收购沈阳啤酒厂,并与SABMiller合作成立华润雪花,正式进入啤酒行业。'
}
# Step4: 全文检索
# 分数越高,相关性越大
{
score: 0.31,
name: '自2006年起,雪花销量连续多年全球第一,2022年销量约1100万千升,占中国啤酒市场约30%份额。'
},
{
score: 0.52,
name: '品牌历史起源于1957年成立的沈阳啤酒厂。1994年华润收购沈阳啤酒厂,并与SABMiller合作成立华润雪花,正式进入啤酒行业。'
},
{
score: 0.11,
name: '雪花推行“零碳工厂”计划,减少水资源消耗和碳排放,并开展“雪花勇闯'
}
# Step5: 排序后返回
# 通过综合加权排序得到最终结果,并召回完整的分段
A: 雪花啤酒(Snow Beer)是中国最知名的啤酒品牌之一...的详细介绍:
1. 品牌历史与发展
起源:雪花啤酒的前身是沈阳啤酒厂,成立于1957年。1994年,华润集团收购沈阳啤酒厂,正式进入啤酒行业,并与SABMiller合作成立华润雪花。
快速扩张:通过兼并收购地方品牌...保持至今。
国际化:2018年...国际化布局。
...
结语
在实际搭建知识库时,我们往往会采用多种向量检索和存储的方案。基本思路是:通过多路召回,“海选”出每个小组的TopK个结果,然后进入“淘汰赛”阶段,优中选优,最终找到关联度最高的结果。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:使用RAG构建高质量知识库第三部分数据嵌入要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点OmniParser是微软AI驱动的SaaS工具,基于YOLOv8和BLIP-2,将UI截图与漫画页面解析为结构化数据,支持UI元素检测、漫画面板分析、对话框及人脸识别,适用于自动化测试、漫画翻译等场景。
通义灵码是贯穿开发全流程的智能编码助手,具备代码智能生成、研发智能问答、多编程语言及编辑器支持、代码安全隐私保障四大核心能力,适用于学生、新手及企业开发者等多类人群,提升编码效率。
基于人工智能的自动化道路巡逻和资产数据收集方案,通过车载相机自动采集路面及周边资产数据,识别裂缝、坑槽等病害并建立数字化台账,同时自动删除隐私图像,实现从被动响应向主动预防的转变,降低巡检成本。
阿里旗下通义智文是一款智能阅读工具,支持网页、论文、图书和自由阅读四种场景,帮助用户快速提取核心观点,节省阅读时间,适合学生、研究人员及职场人士高效处理大量文本。
- 日榜
- 周榜
- 月榜
热点快看
