LangChain教程:langchain-community第三方集成仓库 作者:马育民 • 2026-05-24 20:09 • 阅读:10000 # 介绍 **langchain-community** 是 LangChain 生态中的 **第三方集成仓库**,由社区主导维护,集中存放非官方、非核心但高频使用的组件,是 LangChain 连接外部世界的“万能适配器”。 - **依赖关系**:仅依赖 `langchain-core`(核心接口),无强制依赖,所有第三方依赖均为**可选安装**。 - **生态分工**: - `langchain-core`:定义标准接口(LLM、VectorStore、Tool 等)。 - `langchain`:通用链/代理逻辑(不涉及具体集成)。 - `langchain-community`:社区贡献的第三方集成(占 LangChain 集成量 90%+)。 - 官方分包:`langchain-openai`、`langchain-anthropic` 等(热门集成拆分,生产优先)。 ### 模型集成(LLM/ChatModel) 覆盖**主流+小众+本地部署**模型,统一 `langchain-core` 接口,无缝切换。 - **国内模型**:通义千问(`ChatTongyi`)、DeepSeek(社区版)、智谱 GLM、文心一言。 - **本地模型**:Ollama(调用本地 Llama3/DeepSeek)、`HuggingFacePipeline`(本地 Hugging Face 模型)。 - **开源/小众**:LlamaCpp、Cohere、AI21、Replicate 等。 ### 文档加载器(Document Loaders) RAG 核心入口,支持**几乎所有格式**的文档导入。 - **文件格式**:`TextLoader`(.txt)、`PyPDFLoader`(PDF)、`CSVLoader`、`UnstructuredLoader`(Word/Markdown/HTML)。 - **批量/目录**:`DirectoryLoader`(递归加载目录)、`NotionLoader`、`GitHubLoader`、`YouTubeLoader`(字幕)。 - **数据库/云**:`SQLDatabaseLoader`、`MongoDBLoader`、`S3Loader` 等。 ### 向量存储(Vector Stores) RAG 核心组件,对接**主流向量库+数据库向量扩展**。 - **轻量开源**:Chroma、FAISS(本地优先)、PGVector(PostgreSQL 向量插件)。 - **云端/企业级**:Pinecone、Weaviate、Milvus、Qdrant、Elasticsearch(向量版)。 **使用示例**: ```python from langchain_community.vectorstores import Chroma from langchain_community.embeddings import HuggingFaceEmbeddings vectorstore = Chroma.from_documents( documents=docs, embedding=HuggingFaceEmbeddings() ) ``` ### 文本分割器(Text Splitters) 将长文档切分为**语义连贯、检索友好**的片段。 - **通用**:`RecursiveCharacterTextSplitter`(按段落/句子递归分割,最常用)。 - **语义感知**:`TokenTextSplitter`(按 LLM token 数)、`MarkdownTextSplitter`、`LatexTextSplitter`。 ### 工具集成(Tools) Agent 核心能力,对接**搜索、数据库、API、系统命令**等外部工具。 - **搜索**:`TavilySearch`、`GoogleSearch`、`SerpAPI`、`ArXivSearch`。 - **系统/代码**:`PythonREPLTool`、`ShellTool`、`RequestsTool`(HTTP 调用)。 - **办公/协作**:`SlackTool`、`NotionTool`、`GitHubTool`。 ### 记忆(Memory) 扩展 `langchain-core` 记忆能力,支持**多轮对话上下文管理**。 - **存储型**:`RedisChatMessageHistory`、`MongoDBChatMessageHistory`、`SQLiteMemory`。 - **摘要型**:`ConversationSummaryMemory`、`VectorStoreRetrieverMemory`(向量记忆)。 ### 检索器(Retrievers) RAG 核心,将向量存储封装为**统一检索接口**。 - **向量检索**:`VectorStoreRetriever`(基础)、`MultiQueryRetriever`(多查询扩展)。 - **混合检索**:`EnsembleRetriever`(向量+关键词)、`BM25Retriever`(关键词检索)。 # 安装 ```bash # 基础安装(无依赖) pip install langchain-community ``` ``` # 带常用依赖(如向量库、文档处理) pip install "langchain-community[all]" # 全量依赖(不推荐) pip install "langchain-community[vectorstores]" # 仅向量库依赖 pip install "langchain-community[document_loaders]" # 仅文档加载依赖 ``` # RAG 例子 ```python # 1. 加载文档 from langchain_community.document_loaders import TextLoader loader = TextLoader("demo.txt") docs = loader.load() # 2. 分割文本 from langchain.text_splitter import RecursiveCharacterTextSplitter splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) chunks = splitter.split_documents(docs) # 3. 向量存储 from langchain_community.vectorstores import FAISS from langchain_community.embeddings import HuggingFaceEmbeddings vectorstore = FAISS.from_documents(chunks, HuggingFaceEmbeddings()) # 4. 检索+生成 from langchain_community.llms import Ollama from langchain.chains import RetrievalQA qa_chain = RetrievalQA.from_chain_type( llm=Ollama(model="deepseek-r1"), retriever=vectorstore.as_retriever() ) print(qa_chain.run("你的问题")) ``` ### 优点 - **覆盖极广**:95%+ 小众集成需求,原型开发“开箱即用”。 - **轻量灵活**:可选依赖,不冗余,按需安装。 - **社区活跃**:快速新增模型/工具,适配最新开源生态。 ### 缺点 - **质量参差**:部分组件维护滞后、文档简陋、bug 较多。 - **版本兼容**:依赖升级可能导致组件失效(如 Hugging Face 版本)。 - **无官方 SLA**:问题响应慢,生产环境风险高。 # 使用建议 - **原型阶段**:优先用 `langchain-community`,快速验证想法。 - **生产环境**: - 热门集成:替换为官方分包(如 `langchain-openai`)。 - 关键组件:自研或fork后维护,确保稳定性。 - 小众集成:评估后封装,加单元测试与版本锁定。 # 与官方分包对比 | 特性 | langchain-community | 官方分包(如 langchain-openai) | | :--- | :--- | :--- | | **维护方** | 社区 | LangChain 官方团队 | | **质量** | 参差 | 高,严格测试 | | **更新** | 不定期 | 同步核心版本,及时修复 | | **文档** | 简略 | 完善,含最佳实践 | | **适用场景** | 原型、小众需求 | 生产、核心链路 | # 总结 **langchain-community** 是 LangChain 生态的“**万能工具箱**”,以**全面性、灵活性、低成本**成为原型开发首选;但生产环境需谨慎,优先官方分包或自研封装。 原文出处:http://malaoshi.top/show_1GW3N39qlj14.html