三步掌握国家中小学智慧教育平台电子课本PDF免费下载技巧
2026/8/5 14:57:16
tags:/n - langchain
| 局限 | 说明 |
|---|---|
| 知识滞后 | 训练数据有截止日期 |
| 知识缺失 | 不包含企业私有数据 |
| 幻觉 | 对不确定内容可能编造答案 |
文档加载 → 切分 → 嵌入 → 向量存储 → 检索 → 生成| 组件 | 作用 | 示例 |
|---|---|---|
| DocumentLoader | 加载各种格式文档 | PDFLoader、DocxLoader |
| TextSplitter | 将文档切分为小块 | RecursiveCharacterTextSplitter |
| Embeddings | 文本转向量 | OpenAIEmbeddings、BGE-M3 |
| VectorStore | 存储和检索向量 | Milvus、Chroma |
| Retriever | 相似度检索 | vector_store.as_retriever() |
""" 文档加载演示 运行方式:python 04_文档加载.py """fromlangchain_community.document_loadersimportPyPDFLoader,Docx2txtLoader# 加载 PDFloader=PyPDFLoader("document.pdf")docs=loader.load()# 加载 Docxloader=Docx2txtLoader("document.docx")docs=loader.load()fordocindocs:print(f"内容:{doc.page_content[:100]}...")print(f"元数据:{doc.metadata}")""" 文档切分演示 运行方式:python 04_文档切分.py """fromlangchain.text_splitterimportRecursiveCharacterTextSplitter text_splitter=RecursiveCharacterTextSplitter(chunk_size=500,# 每块最大字符数chunk_overlap=50,# 块间重叠字符数separators=["\n\n","\n","。",","," "],)chunks=text_splitter.split_documents(docs)print(f"切分为{len(chunks)}个块")""" 文档嵌入演示 运行方式:python 04_文档嵌入.py """fromlangchain_openaiimportOpenAIEmbeddings embeddings=OpenAIEmbeddings(model="text-embedding-3-small",base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",api_key=os.getenv("DASHSCOPE_API_KEY"),)# 单个文本嵌入vector=embeddings.embed_query("什么是LangChain")# 批量嵌入vectors=embeddings.embed_documents(["LangChain是什么","RAG是什么"])""" LangChain + Milvus 完整 RAG 流程 运行方式:python 04_RAG完整流程.py """fromlangchain_openaiimportOpenAIEmbeddings,ChatOpenAIfromlangchain_milvusimportMilvusfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.runnablesimportRunnablePassthrough# 1. 初始化嵌入模型embeddings=OpenAIEmbeddings(model="text-embedding-3-small",...)# 2. 初始化 Milvus 向量存储vector_store=Milvus(embedding_function=embeddings,connection_args={"host":"localhost","port":"19530"},collection_name="langchain_demo",)# 3. 添加文档fromlangchain_core.documentsimportDocument docs=[Document(page_content="LangChain是大模型应用开发框架"),Document(page_content="RAG是检索增强生成技术"),Document(page_content="Milvus是开源向量数据库"),]vector_store.add_documents(docs)# 4. 创建检索器retriever=vector_store.as_retriever(search_kwargs={"k":2})# 5. 构建 RAG Chainllm=ChatOpenAI(model="qwen-plus",...)prompt=ChatPromptTemplate.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. 提问answer=rag_chain.invoke("什么是LangChain?")print(f"答案:{answer}")[[01-LangChain概述]] · [[02-Model-IO与模型调用]] · [[03-提示词模板与Chains]] · [[05-Agents智能体]]