一分钟搞懂RAG

一分钟搞懂RAG {#rag}

世界上95%的信息都是私有信息, 无法用于模型训练, 但我们可以在使用模型时把这些信息喂给它.

RAG 主要解决2个问题, 一是无法获取最新的信息. 二是幻想.

RAG 在prompt 给 LLM 之前会先访问指定的信息源查找, 之后再把检索的信息一起喂给 LLM.

它由2部分组成 retriever 和 knowledge base.

RAG

我们的信息是怎么变成 knowledge base 的呢?

knowledgebase

rag 先把每一个文档数据都向量化成一个数值数组, 这样就可以对其进行计算, 当你查询时, 就可以计算出哪个文档和你的问题关系最大(retriever 做的就是这个事情), 然后用问题和这个文档重新组合 prompt 一起发给 LLM.

### 实现 RAG 检索增强生成技术 RAG(检索增强生成,Retrieval-Augmented Generation)是一种结合了外部知识库和生成模型的技术,在问答系统、客服对话以及长文本生成等领域具有广泛应用价值[^2]。以下是关于其实现的具体说明: #### 1. 数据准备 为了构建有效的 RAG 系统,需要先准备好用于检索的知识库。通常情况下,这些知识会被存储在向量数据库中以便高效查询。例如,可以使用 Milvus 或 Pinecone 等工具来创建基于嵌入表示的向量数据库。 ```python from langchain.vectorstores import FAISS from langchain.embeddings.openai import OpenAIEmbeddings embeddings = OpenAIEmbeddings() vectorstore = FAISS.from_texts(["这里是文档片段"], embeddings) ``` 上述代码展示了如何利用 LangChain 库中的 `FAISS` 来初始化一个简单的向量存储实例,并加载一些示例文本数据[^1]。 #### 2. 查询处理与检索 当接收到用户的输入时,第一步是对该输入进行编码并将其转换成适合比较的形式——通常是高维空间里的稠密向量。之后就可以执行相似度匹配操作以找到最接近的结果条目。 ```python query_result = vectorstore.similarity_search("这是一个测试查询", k=2) print(query_result) ``` 这里我们调用了之前定义好的 `vectorstore` 对象上的方法来进行近邻查找,返回前两个最佳匹配项。 #### 3. 结果融合与最终输出 最后一步就是把检索出来的上下文信息传递给预训练的语言模型完成进一步加工或者直接响应用户请求。这可能涉及到模板填充或者是更加复杂的多轮交互逻辑设计。 ```python from transformers import pipeline generator = pipeline('text-generation', model='gpt2') context = "\n".join([doc.page_content for doc in query_result]) generated_text = generator(context, max_length=50)[0]['generated_text'] print(generated_text) ``` 在这个例子当中,选择了 Hugging Face 提供的 GPT-2 模型作为生成组件的一部分[^4]。它接收来自上一环节拼接而成的整体情境描述作为新的提示词进而生产连贯的回答内容。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值