RAG 概述
RAG (Retrieval-Augmented Generation) 检索增强生成,是一种将信息检索与文本生成相结合的技术。
RAG 工作流程
RAG 通过三个核心阶段运作:
- 检索 (Retrieval):搜索知识库
- 增强 (Augmentation):对文档进行排序和过滤
- 生成 (Generation):LLM 生成响应
RAG 的优势
- 减少大型语言模型的幻觉问题
- 使生成内容更加准确和可靠
应用场景
- 客户服务
- 研究助手
- 企业知识管理
ChatPromptTemplate
- 构建聊天提示模板的核心类
- 支持可重用模板、动态变量插入、多角色对话
- 可与 LLMChain、Memory、Agents 和 OutputParsers 集成
安装依赖
pip install --upgrade --quiet langchain-core langchain-community langchain-openai
pip install langchain docarray tiktoken
代码示例
from langchain_community.vectorstores import DocArrayInMemorySearch
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableParallel, RunnablePassthrough
from langchain_openai.chat_models import ChatOpenAI
from langchain_openai.embeddings import OpenAIEmbeddings
vectorstore = DocArrayInMemorySearch.from_texts(
["harrison worked at kensho", "bears like to eat honey"],
embedding=OpenAIEmbeddings(),
)
retriever = vectorstore.as_retriever()
template = """Answer the question based only on the following context:
{context}
Question: {question}
"""
prompt = ChatPromptTemplate.from_template(template)
model = ChatOpenAI(model="gpt-3.5-turbo")
output_parser = StrOutputParser()
setup_and_retrieval = RunnableParallel(
{"context": retriever, "question": RunnablePassthrough()}
)
chain = setup_and_retrieval | prompt | model | output_parser
message = chain.invoke("where did harrison work?")
print(message)
运行结果
Harrison worked at Kensho.