LangChain教程:langchain-community第三方集成仓库

介绍

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(向量版)。

使用示例:

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(关键词检索)。

安装

# 基础安装(无依赖)
pip install langchain-community
# 带常用依赖(如向量库、文档处理)
pip install "langchain-community[all]"  # 全量依赖(不推荐)
pip install "langchain-community[vectorstores]"  # 仅向量库依赖
pip install "langchain-community[document_loaders]"  # 仅文档加载依赖

RAG 例子

# 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 生态的“万能工具箱”,以全面性、灵活性、低成本成为原型开发首选;但生产环境需谨慎,优先官方分包或自研封装。


原文出处:/show_1GW3N39qlj14.html