探索对话式RAG:构建智能问答系统的指南
引言
在构建智能问答应用时,我们通常希望实现一个能够进行来回对话的系统。这要求应用程序具有某种“记忆”,能够记住过去的问题和答案,并将其纳入当前的思考中。在这篇文章中,我们将探讨如何在问答系统中实现这种对话记忆,介绍检索增强生成(RAG)技术以及其实现方法。
主要内容
1. 理解检索增强生成(RAG)
RAG是结合检索技术和生成模型的一种方法。首先从外部知识库中获取相关信息,然后利用生成模型(如GPT)来生成最终答案。在对话环境中,这种方法特别有用,因为它允许系统通过检索上下文生成更准确的回答。
2. 构建链式RAG
链式RAG是一个简单且直接的方法。系统不断从知识库中检索信息,并将检索到的上下文与用户的问题一起输入到LLM中进行回答。
- 步骤:
- 使用OpenAI的embedding将文档嵌入到向量空间。
- 使用Chroma作为向量存储库。
- 为LLM构建提示模板,这个模板会在检索到的上下文基础上生成答案。
import bs4
from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import RecursiveCharacterTextSplitter
# 加载、切分、索引文档
loader = WebBaseLoader(web_paths=("https://lilianweng.github.io/posts/2023-06-23-agent/",))
docs = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
splits = text_splitter.split_documents

最低0.47元/天 解锁文章
764

被折叠的 条评论
为什么被折叠?



