RAG和知识库工作原理

部署运行你感兴趣的模型镜像

上一篇介绍了一下DeepSeek本地化部署的简易架构,对本地知识库的作用也做了一下简要的描述。今天总结一下知识库用到的RAG(Retrieval-Augmented Generation,检索增强生成)技术的工作原理,把知识库这三个字稍微打开一下。图1是RAG技术的一个工作逻辑图,相较于部署架构,增加了1、2、4、5过程描述,增加了一个向量数据库的概念,这些里面涉及的详细技术暂不展开,仍然从应用的角度作一个更加细致的描述,以便于理解其工作的模式和原理。

图1-知识库(RAG)+大模型工作原理

一、RAG技术定义

RAG(Retrieval Augmented Generation),即检索增强生成,是一种将外部数据检索结果与大模型相结合的技术,旨在提升答案的生成能力。主要起到解决以下4个方面的问题:缓解大模型的幻觉问题;确保数据的实时性,因为大模型的训练数据通常是过去的;满足私有数据的保密性要求,确保数据安全;提高答案的可解释性,使答案来源可追溯。

二、RAG技术的主要过程

图2是在图1的基础上,把向量化、向量数据库、相似性查询、Prompt的过程做了进一步细化,更方便理解知识是如何被记录、使用的整个过程。

1. 文本分割(Chunking)

我们日常使用的文件类型像Word,Excel,PDF等文件包含内容丰富,但是这些内容是不能被计算机认识的数据,需要将其转换为计算机可以识别的语言,第一步是将这些文件内容按照文本的格式进行提取,形成一个整体的文本文件。

这一步形成的文本文件通常都比较大,存储、查询都很不方便,并且大模型在识别时也有长度限制,需要将大的文本按照一定的逻辑拆分成一个个小的文本块,方便存储的同时也更便于查找信息。这个步骤像把一本书分成一个一个的章节,甚至细分成一页一页的内容,方便提取每一页、每一章的重点知识。

拆分后的每个文本块需要附带其来源文件的路径、起始行号等元数据,以便于后续检索和定位。

2. 向量嵌入/向量化(Embedding)

文本块分割后按照一定的嵌入模型(BGE、GTE、E5等)进行向量化,一般表示格式像[0.1,1.5,0.6]这样的格式,每一个文本块都会生成一个独立的向量表示,相当于给给个文本块生成了一个特有的“指纹”,方便存储和信息检索。像下面图片中实例的,不同的文本按照语义形成不同的向量表示。

3. 向量数据库存储

文本块向量化后需要找一个地方进行存储,这里就用到向量数据库。向量数据库存储文本块的“指纹”和对应的元数据内容,方便进行查询和检索。

4. 查询向量化

用户在查询时输入问题,问题的内容也是不能被计算机理解的,需要对问题也进行向量化处理,并且使用的是同一个嵌入模型,给问题也生成一个特有的“指纹”,这样就能让问题和知识有了共同语言,方便进行下一步查找工作。

在朴素RAG模型中,往往使用用户输入的原始问题,容易产生问题理解不清楚、与专业领域知识相关性不高、大模型回答质量低等问题,在高级的RAG模型中会对用户输入的问题进行查询扩展、查询转换和查询构建等优化,目的是提高问题回答质量,这些后面有机会再展开讨论。

5. 相似性检索

将问题的指纹和向量数据库中的数据指纹进行比对,找到相关的性最高的N个(N的个数一般在程序中设置)数据。一般会用到近似最近邻搜索(ANN Searh)。

查询阶段共有编码查询(Encoding Queries)、近似最近邻搜索(ANN Search)、索引搜索(Indexing Search)、数据存储检索(Datastore Retrieval)、后处理(Post-Processing)等模式和过程,根据不同的场景会有不同的选择。

6. 结果重排序(Reranking)

这个步骤是后处理阶段的一种方法,根据任务特定目标重新排序检索到的知识,以提高相关性。例如,在信息检索任务中,可以使用学习到的排序模型对检索到的文档进行重新排序,将与用户查询最相关的文档排在前面。相关的技术还有重要性加权(Importance Weighting),为检索到的知识分配重要性权重,过滤掉不太相关的上下文。

以上结果重排序和重要性加权不是非必须的过程,具体使用过程中需要根据场景和模型精度进行调整。

7. 生成答案

将用户的问题和查找到的上下文信息整理好形成新的提示词(Prompt)输入给LLM,LLM依据自己对语义的理解重新整理组合,形成一个结果返回给用户。

三、总结

RAG的核心思想是在文本生成过程中引入外部知识检索机制,核心作用主要体现在以下三个方面:

信息增强:补充模型的知识盲区与动态更新。解决时效性问题;填补专业领域空白。

领域适配:定制化生成专业内容。术语与上下文适配;场景化输出(如客服对话记录、产品手册)。

隐私与安全:数据闭环控制。敏感数据本地化,满足金融、医疗、政务等高规格要求;可控的知识边界,通过限制检索范围(如仅内部文档),减少模型生成无关或错误信息(“幻觉”)的风险,同时避免引用未经授权的外部数据。



参考文章:

  1. https://mp.weixin.qq.com/s/dDYy5-j4g--dVDofQR8gpg;
  2. https://blog.youkuaiyun.com/qq_22866291/article/details/145431680;
  3. https://baijiahao.baidu.com/s?id=1819907792017246758&wfr=spider&for=pc;
  4. https://blog.youkuaiyun.com/Coo123_/article/details/143935680。

您可能感兴趣的与本文相关的镜像

Qwen3-8B

Qwen3-8B

文本生成
Qwen3

Qwen3 是 Qwen 系列中的最新一代大型语言模型,提供了一整套密集型和专家混合(MoE)模型。基于广泛的训练,Qwen3 在推理、指令执行、代理能力和多语言支持方面取得了突破性进展

### RAG 构建知识库工作原理及实现方式 RAG(Retrieval-Augmented Generation)是一种结合检索生成技术的方法,用于增强基于大模型的应用程序性能。其核心思想是在生成阶段引入外部知识源的支持,从而提高生成内容的相关性准确性。 #### 工作原理 RAG 的工作流程可以分为以下几个部分: 1. **数据存储与索引** 外部知识被预先处理并存储到向量数据库或其他形式的知识库中。这些知识通常经过嵌入表示转换为高维空间中的向量[^1]。这种设计使得后续可以通过相似度计算快速找到相关内容。 2. **查询解析与检索** 当用户提供输入时,该输入会被转化为相同维度的向量,并利用搜索引擎或向量匹配算法从已有的知识库中提取最接近的结果集合[^1]。这一环节决定了最终输出的质量,因此需要精心优化检索策略。 3. **上下文融合与提示构建** 检索得到的信息会作为额外背景材料加入到原始请求之中形成新的Prompt结构[^2]。此操作允许预训练语言模型充分利用历史积累的数据来做出更精确的回答。 4. **响应生成与反馈循环** 基于扩充后的Prompts, AI系统调用相应的LLM完成具体任务如问答、摘要撰写等[^1]。如果有必要还可以设置多重验证机制确保答案可信可靠。 以下是简单的Python代码示例展示如何集成以上各模块创建基本版RAG应用: ```python from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import FAISS from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.chains import RetrievalQA from langchain.llms import OpenAI def create_knowledge_base(texts): text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=0) documents = text_splitter.create_documents([texts]) embeddings = OpenAIEmbeddings() db = FAISS.from_documents(documents, embeddings) return db def rag_pipeline(query, knowledge_db): retriever = knowledge_db.as_retriever(search_kwargs={"k": 2}) qa_chain = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=retriever) result = qa_chain.run(query) return result # Example Usage knowledge_text = "Your large document or dataset here." db = create_knowledge_base(knowledge_text) response = rag_pipeline("What is the main idea?", db) print(response) ``` 上述脚本展示了怎样借助LangChain框架搭建简易版本的RAG流水线工程。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值