RAG是如何工作的?
先来聊聊RAG——检索增强生成。这玩意儿其实是NLP领域一个相当前沿的玩法,核心思路就是把信息检索和文本生成打包到一起,让模型回答问题时既不是瞎编也不是照本宣科,而是能真正“查资料”再“写答案”。下面咱们就从头到尾拆一遍,看看它到底是怎么工作的。
一、知识库如何导入
一、知识库如何导入
知识库是RAG的根基,质量直接决定最终表现。实际落地时,知识库装的东西五花八门:文档、网页、数据库记录,结构化和非结构化数据都有。导入之前得先收拾利索。
1. 数据收集
1. 数据收集
数据来源很灵活——公司内部数据库、公开数据源、爬虫抓的网页都行。数据类型嘛,主要是文本(文章、邮件、文档),但也可能包含结构化记录(表格),甚至多媒体文件。不过RAG吃的主力还是文本。
2. 数据预处理
2. 数据预处理
收来的数据不能直接扔进去,得先洗一洗:
- :去掉HTML标签、特殊字符这些噪音和冗余。
清洗
- :把不同来源的数据统一成一种格式,方便后续处理。
格式化
- :长文档砍成短片段,检索起来更快,也更精准。
分段
3. 数据导入
3. 数据导入
预处理完的数据,通常转成JSON或XML这类通用格式,然后用API或者批量工具灌进知识库。
二、知识库存储在哪里?向量数据库的存储原理
二、知识库存储在哪里?向量数据库的存储原理
数据存哪是个关键问题。传统关系型数据库(比如MySQL、PostgreSQL)处理结构化数据挺在行,但RAG的场景是海量文本+高效检索,所以向量数据库才是正解。
1. 向量数据库简介
1. 向量数据库简介
说白了,向量数据库就是专门用来存和查高维向量的,常见的有FAISS、Milvus、Pinecone。它能快速算向量之间的相似度,支持高效的近似最近邻搜索(ANN)。
2. 向量数据库的存储原理
2. 向量数据库的存储原理
核心原理并不复杂:把文本通过嵌入模型(比如BERT、GPT)转成高维向量,然后建索引结构来加速查找。关键组件有三:
- :文本转成向量。
向量表示
- :倒排索引、HNSW图、K-D树等,目的就是快。
索引结构
- :欧氏距离、余弦相似度,挑一个来算距离。
相似度计算
3. 向量数据库示意图
3. 向量数据库示意图

上图把流程画清楚了:文本先向量化,然后存进索引,查询时一算相似度就能找到最接近的结果。
三、导入的文本如何拆分并存入向量数据库
三、导入的文本如何拆分并存入向量数据库
长文本不能整个塞进去,得拆成小段再存。这一步决定了检索的颗粒度。
1. 文本拆分策略
1. 文本拆分策略
拆法可以灵活选:
- :一段一个块,适合信息比较独立的场景。
按段落
- :更细粒度,适合需要精确匹配的问答。
按句子
- :比如每500字一段,保证每块长度均匀。
按固定长度
2. 文本向量化
2. 文本向量化
拆好的片段要通过嵌入模型变成向量。BERT、RoBERTa、GPT这些模型都能用,它们把文本映射到高维空间,语义相似的片段在空间中就挨得近。
3. 向量存储
3. 向量存储
存进向量数据库的过程分三步:
- :片段送进模型,吐出向量。
向量生成
- :把向量加到索引结构里,方便之后快速找。
向量索引
- :除了向量本身,还要记下原始内容、来源、时间戳这些信息。
元数据存储
四、用户的问题如何被查询出来
四、用户的问题如何被查询出来
用户提一个问题,系统得先把它转成能检索的形式。
1. 问题向量化
1. 问题向量化
跟文本块一样,用户问题也要用同样的嵌入模型转成向量——这一步对上了才能算相似度。
2. 向量检索
2. 向量检索
算相似度两个常用指标:
- :距离越小越相似。
欧氏距离
- :夹角越小(值越大)越相似。
余弦相似度
向量数据库靠HNSW图这类索引加近似最近邻算法,刷刷几毫秒就能找到最匹配的那些向量。
五、检索结果如何送到大模型并生成回答
五、检索结果如何送到大模型并生成回答
查到的相关文本块,要喂给生成模型(比如GPT-4)去“消化”并写出答案。
1. 检索结果处理
1. 检索结果处理
常见的两种做法:
- :把几个相关块拼成一个长文本,作为上下文。
拼接文本块
- :只挑一两个最相关的,减少模型处理负担。
选择最相关块
2. 生成模型回答
2. 生成模型回答
模型接到上下文和用户问题后,先理解,再生成自然语言回答。这个过程结合了检索到的知识,所以答案既有依据又流畅。
六、如何优化Prompt以达到最佳结果
六、如何优化Prompt以达到最佳结果
Prompt设计得好不好,直接影响回答质量。这里有几个原则可参考:
1. Prompt设计原则
1. Prompt设计原则
- :别含糊,把查询和上下文说清楚。
明确具体
- :关键信息都塞进Prompt,别让模型去猜。
信息充分
- :太长太绕反而降低理解效率。
简洁易懂
2. Prompt示例
2. Prompt示例
比方用户问“如何优化SEO?”,一个合理的Prompt可以这样写:
用户的问题是“如何优化SEO?”以下是相关的知识: 1. SEO(Search Engine Optimization)是一种提高网站在搜索引擎结果中排名的方法。 2. 关键字优化是SEO的重要策略,通过选择和使用合适的关键字,可以提高网站的搜索引擎排名。 3. 内容质量和外部链接也是影响SEO的重要因素。 请根据以上信息回答用户的问题。
3. Prompt调优
3. Prompt调优
调优没有终点。A/B测试和用户反馈是两个常用手段:跑对比实验看哪个Prompt效果好,或者收集用户反馈持续迭代。
结论
结论
RAG把检索和生成结合起来,既解决了传统生成模型知识更新慢、容易“胡诌”的痛点,又保留了生成模型的灵活性。从知识库导入、向量存储、文本拆分、问题检索到最终生成,每个环节都有讲究。只要合理设计并持续优化,RAG系统在知识问答、客服、内容生成等场景里能发挥很大的实用价值。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名