langchain应用-RAG
- 互联网
- 2025-09-01 04:54:01

简述
检索增强生成(Retrieval Augmented Generation),简称 RAG,已经成为当前最火热的LLM应用方案。
RAG(中文为检索增强生成) = 检索技术 + LLM 提示。例如,我们向 LLM 提问一个问题(answer),RAG 从各种数据源检索相关的信息,并将检索到的信息和问题(answer)注入到 LLM 提示中,LLM 最后给出答案。
完整的RAG应用流程主要包含两个阶段:
数据准备阶段:数据提取——>文本分割——>向量化(embedding)——>数据入库应用阶段:用户提问——>数据检索(召回)——>注入Prompt——>LLM生成答案下面我们详细介绍一下各环节的技术细节和注意事项:
数据准备阶段数据准备一般是一个离线的过程,主要是将私域数据向量化后构建索引并存入数据库的过程。主要包括:数据提取、文本分割、向量化、数据入库等环节。
code
from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_community.document_loaders import WebBaseLoader from langchain_chroma import Chroma from langchain_ollama import OllamaEmbeddings from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate from langchain_ollama import ChatOllama # 数据提取 loader = WebBaseLoader(" lilianweng.github.io/posts/2023-06-23-agent/") data = loader.load() # 文本分割 text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0) all_splits = text_splitter.split_documents(data) #print(all_splits) #向量化(embedding) local_embeddings = OllamaEmbeddings(model="nomic-embed-text") vectorstore = Chroma.from_documents(documents=all_splits, embedding=local_embeddings) 应用阶段在应用阶段,我们根据用户的提问,通过高效的检索方法,召回与提问最相关的知识,并融入Prompt;大模型参考当前提问和相关知识,生成相应的答案。关键环节包括:数据检索、注入Prompt等。
code
prompt = ChatPromptTemplate.from_template( "Summarize the main themes in these retrieved docs: {docs}" ) llm = ChatOllama( model="qwen2:7b", # model="llama3.1:8b", # model="ollama /wangshenzhi/llama3.1_8b_chinese_chat:latest", # model="EntropyYue/chatglm3:6b", # temperature=0.4, temperature=0.2, verbose=True ) def format_docs(docs): return "\n\n".join(doc.page_content for doc in docs) chain = {"docs": format_docs} | prompt | llm | StrOutputParser() question = "What are the approaches to Task Decomposition?" # 数据检索 docs = vectorstore.similarity_search(question) # 注入Prompt response = chain.invoke(docs) print(response) 参考文章一文读懂:大模型RAG(检索增强生成)_rag大模型-CSDN博客
langchain应用-RAG由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“langchain应用-RAG”
上一篇
进制和编码
下一篇
机器学习入门实战4-基本模型