tags:/n - langchainrag检索增强向量检索面试aliases:/n - RAG检索增强生成04 RAG 检索增强一、RAG 介绍大模型的局限局限说明知识滞后训练数据有截止日期知识缺失不包含企业私有数据幻觉对不确定内容可能编造答案RAG 流程文档加载 → 切分 → 嵌入 → 向量存储 → 检索 → 生成RAG 核心组件组件作用示例DocumentLoader加载各种格式文档PDFLoader、DocxLoaderTextSplitter将文档切分为小块RecursiveCharacterTextSplitterEmbeddings文本转向量OpenAIEmbeddings、BGE-M3VectorStore存储和检索向量Milvus、ChromaRetriever相似度检索vector_store.as_retriever()二、文档加载 文档加载演示 运行方式python 04_文档加载.py fromlangchain_community.document_loadersimportPyPDFLoader,Docx2txtLoader# 加载 PDFloaderPyPDFLoader(document.pdf)docsloader.load()# 加载 DocxloaderDocx2txtLoader(document.docx)docsloader.load()fordocindocs:print(f内容:{doc.page_content[:100]}...)print(f元数据:{doc.metadata})三、文档切分 文档切分演示 运行方式python 04_文档切分.py fromlangchain.text_splitterimportRecursiveCharacterTextSplitter text_splitterRecursiveCharacterTextSplitter(chunk_size500,# 每块最大字符数chunk_overlap50,# 块间重叠字符数separators[\n\n,\n,。,, ],)chunkstext_splitter.split_documents(docs)print(f切分为{len(chunks)}个块)四、文档嵌入 文档嵌入演示 运行方式python 04_文档嵌入.py fromlangchain_openaiimportOpenAIEmbeddings embeddingsOpenAIEmbeddings(modeltext-embedding-3-small,base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,api_keyos.getenv(DASHSCOPE_API_KEY),)# 单个文本嵌入vectorembeddings.embed_query(什么是LangChain)# 批量嵌入vectorsembeddings.embed_documents([LangChain是什么,RAG是什么])五、向量存储和检索Milvus LangChain Milvus 完整 RAG 流程 运行方式python 04_RAG完整流程.py fromlangchain_openaiimportOpenAIEmbeddings,ChatOpenAIfromlangchain_milvusimportMilvusfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.runnablesimportRunnablePassthrough# 1. 初始化嵌入模型embeddingsOpenAIEmbeddings(modeltext-embedding-3-small,...)# 2. 初始化 Milvus 向量存储vector_storeMilvus(embedding_functionembeddings,connection_args{host:localhost,port:19530},collection_namelangchain_demo,)# 3. 添加文档fromlangchain_core.documentsimportDocument docs[Document(page_contentLangChain是大模型应用开发框架),Document(page_contentRAG是检索增强生成技术),Document(page_contentMilvus是开源向量数据库),]vector_store.add_documents(docs)# 4. 创建检索器retrievervector_store.as_retriever(search_kwargs{k:2})# 5. 构建 RAG ChainllmChatOpenAI(modelqwen-plus,...)promptChatPromptTemplate.from_template(根据以下参考资料回答问题\n\n{context}\n\n问题{question})defformat_docs(docs):return\n\n.join(doc.page_contentfordocindocs)rag_chain({context:retriever|format_docs,question:RunnablePassthrough()}|prompt|llm|StrOutputParser())# 6. 提问answerrag_chain.invoke(什么是LangChain)print(f答案:{answer})相关笔记[[01-LangChain概述]] · [[02-Model-IO与模型调用]] · [[03-提示词模板与Chains]] · [[05-Agents智能体]]
04 RAG 检索增强
发布时间:2026/6/28 5:56:28
tags:/n - langchainrag检索增强向量检索面试aliases:/n - RAG检索增强生成04 RAG 检索增强一、RAG 介绍大模型的局限局限说明知识滞后训练数据有截止日期知识缺失不包含企业私有数据幻觉对不确定内容可能编造答案RAG 流程文档加载 → 切分 → 嵌入 → 向量存储 → 检索 → 生成RAG 核心组件组件作用示例DocumentLoader加载各种格式文档PDFLoader、DocxLoaderTextSplitter将文档切分为小块RecursiveCharacterTextSplitterEmbeddings文本转向量OpenAIEmbeddings、BGE-M3VectorStore存储和检索向量Milvus、ChromaRetriever相似度检索vector_store.as_retriever()二、文档加载 文档加载演示 运行方式python 04_文档加载.py fromlangchain_community.document_loadersimportPyPDFLoader,Docx2txtLoader# 加载 PDFloaderPyPDFLoader(document.pdf)docsloader.load()# 加载 DocxloaderDocx2txtLoader(document.docx)docsloader.load()fordocindocs:print(f内容:{doc.page_content[:100]}...)print(f元数据:{doc.metadata})三、文档切分 文档切分演示 运行方式python 04_文档切分.py fromlangchain.text_splitterimportRecursiveCharacterTextSplitter text_splitterRecursiveCharacterTextSplitter(chunk_size500,# 每块最大字符数chunk_overlap50,# 块间重叠字符数separators[\n\n,\n,。,, ],)chunkstext_splitter.split_documents(docs)print(f切分为{len(chunks)}个块)四、文档嵌入 文档嵌入演示 运行方式python 04_文档嵌入.py fromlangchain_openaiimportOpenAIEmbeddings embeddingsOpenAIEmbeddings(modeltext-embedding-3-small,base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,api_keyos.getenv(DASHSCOPE_API_KEY),)# 单个文本嵌入vectorembeddings.embed_query(什么是LangChain)# 批量嵌入vectorsembeddings.embed_documents([LangChain是什么,RAG是什么])五、向量存储和检索Milvus LangChain Milvus 完整 RAG 流程 运行方式python 04_RAG完整流程.py fromlangchain_openaiimportOpenAIEmbeddings,ChatOpenAIfromlangchain_milvusimportMilvusfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.runnablesimportRunnablePassthrough# 1. 初始化嵌入模型embeddingsOpenAIEmbeddings(modeltext-embedding-3-small,...)# 2. 初始化 Milvus 向量存储vector_storeMilvus(embedding_functionembeddings,connection_args{host:localhost,port:19530},collection_namelangchain_demo,)# 3. 添加文档fromlangchain_core.documentsimportDocument docs[Document(page_contentLangChain是大模型应用开发框架),Document(page_contentRAG是检索增强生成技术),Document(page_contentMilvus是开源向量数据库),]vector_store.add_documents(docs)# 4. 创建检索器retrievervector_store.as_retriever(search_kwargs{k:2})# 5. 构建 RAG ChainllmChatOpenAI(modelqwen-plus,...)promptChatPromptTemplate.from_template(根据以下参考资料回答问题\n\n{context}\n\n问题{question})defformat_docs(docs):return\n\n.join(doc.page_contentfordocindocs)rag_chain({context:retriever|format_docs,question:RunnablePassthrough()}|prompt|llm|StrOutputParser())# 6. 提问answerrag_chain.invoke(什么是LangChain)print(f答案:{answer})相关笔记[[01-LangChain概述]] · [[02-Model-IO与模型调用]] · [[03-提示词模板与Chains]] · [[05-Agents智能体]]