AI创想

标题: 【LangChain】LangChain 中支持的嵌入(embedding)模型 [打印本页]

作者: xianshiyan    时间: 2025-9-7 23:38
标题: 【LangChain】LangChain 中支持的嵌入(embedding)模型
LangChain 中支持的嵌入(embedding)模型,这些模型用于将文本转换为向量表示,以便在向量存储(如 langchain_milvus.Milvus 或 langchain_chroma.Chroma)中进行存储和检索。
本文基于 LangChain 0.3.x,详细介绍 LangChain 支持的嵌入模型(包括内置和第三方集成),并提供一个独立示例,展示如何使用其中一种嵌入模型(OpenAIEmbeddings)结合 langchain_milvus.Milvus 构建 RAG 系统。示例包含 PDF 加载(langchain_community.document_loaders.PyPDFLoader)、分割、嵌入生成和查询。

LangChain 支持的嵌入模型

LangChain 支持多种嵌入模型,通过 langchain.embeddings 模块及其子模块(如 langchain_openai, langchain_huggingface)提供。这些模型包括商业 API(如 OpenAI)、开源模型(如 HuggingFace)以及本地或专用模型。以下是 LangChain 支持的主要嵌入模型类别和具体实现,基于官方文档(Embeddings) 和源码分析。
1. 商业 API 嵌入模型

这些模型通过云服务提供高质量嵌入,适合快速开发,但需 API 密钥和网络连接。
2. 开源嵌入模型

这些模型通常基于 HuggingFace 或其他开源框架,可本地部署,适合隐私敏感或离线场景。
3. 其他嵌入模型

LangChain 还支持一些专用或实验性嵌入模型,适用于特定场景。
4. 自定义嵌入模型

嵌入模型总结

类别模型特点使用场景
商业 APIOpenAIEmbeddingslangchain-openai高质量,易用RAG、语义搜索
商业 APIAzureOpenAIEmbeddingslangchain-openai企业级,Azure 集成企业应用
商业 APIGoogleGenerativeAIEmbeddingslangchain-google-genai多语言支持跨语言任务
商业 APIBedrockEmbeddingslangchain-awsAWS 生态云原生应用
商业 APICohereEmbeddingslangchain-cohere高效,多语言快速原型
开源HuggingFaceEmbeddingslangchain-huggingface开源,本地运行隐私敏感场景
开源OllamaEmbeddingslangchain-community完全本地离线环境
开源LlamaCppEmbeddingslangchain-community高效量化本地高性能
其他FastEmbedEmbeddingslangchain-community轻量快速资源受限环境
其他JinaEmbeddingslangchain-community多模态支持复杂任务
推荐模型

使用嵌入模型的 RAG 示例

以下是一个独立示例,展示如何使用 OpenAIEmbeddings(LangChain 中最常用的嵌入模型之一)结合 langchain_milvus.Milvus 构建 RAG 系统,加载 PDF 文档(关于云计算主题),回答查询。
准备文件
创建一个 PDF 文件 cloud_computing_knowledge.pdf,内容如下(可使用 Word 保存为 PDF):
  1. 云计算通过互联网提供按需计算资源,如服务器和存储。
  2. IaaS(基础设施即服务)提供虚拟机和存储,如 AWS EC2。
  3. SaaS(软件即服务)提供在线应用,如 Google Workspace。
复制代码
代码
  1. import os
  2. os.environ["OPENAI_API_KEY"]="Your OpenAI API Key"from langchain_openai import ChatOpenAI, OpenAIEmbeddings
  3. from langchain_milvus import Milvus
  4. from langchain_core.prompts import ChatPromptTemplate
  5. from langchain_core.output_parsers import StrOutputParser
  6. from langchain_core.runnables import RunnablePassthrough
  7. from langchain.text_splitter import RecursiveCharacterTextSplitter
  8. from langchain_community.document_loaders import PyPDFLoader
  9. # 加载 PDF 文档
  10. loader = PyPDFLoader(file_path="cloud_computing_knowledge.pdf")
  11. documents = loader.load()# 分割文档
  12. splitter = RecursiveCharacterTextSplitter(
  13.     chunk_size=100,
  14.     chunk_overlap=20,
  15.     separators=["\n\n","\n"," ",""])
  16. split_documents = splitter.split_documents(documents)# 初始化嵌入模型和 Milvus 向量存储
  17. embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
  18. vectorstore = Milvus(
  19.     embedding_function=embeddings,
  20.     connection_args={"uri":"http://localhost:19530"},
  21.     collection_name="cloud_computing_collection",
  22.     drop_old=True,
  23.     auto_id=True)
  24. vectorstore.add_documents(split_documents)# 初始化 LLM
  25. llm = ChatOpenAI(temperature=0, model="gpt-4")# 提示模板
  26. prompt = ChatPromptTemplate.from_template("""根据以下上下文回答问题:
  27. 上下文:{context}
  28. 问题:{question}
  29. 回答:""")# 格式化文档函数defformat_docs(docs):return"\n\n".join(doc.page_content for doc in docs)# 创建 RAG 链
  30. rag_chain =({"context": vectorstore.as_retriever(search_kwargs={"k":2})| format_docs,"question": RunnablePassthrough()}| prompt
  31.     | llm
  32.     | StrOutputParser())# 调用链print("RAG 链输出:")
  33. response = rag_chain.invoke("什么是云计算?")print(response)
  34. response = rag_chain.invoke("它有哪些服务模型?")print(response)
复制代码
输出示例
  1. RAG 链输出:
  2. 云计算通过互联网提供按需计算资源,如服务器和存储。
  3. 云计算的服务模型包括 IaaS(基础设施即服务)和 SaaS(软件即服务)。
复制代码
代码说明

运行要求

注意事项


常见问题

Q1:如何选择合适的嵌入模型?
A:根据需求:
Q2:可以混合使用嵌入模型吗?
A:不推荐,同一向量存储应使用相同的嵌入模型,确保向量维度和语义一致。若需切换,重建集合:
  1. vectorstore.drop_old =True
  2. vectorstore.add_documents(documents)
复制代码
Q3:如何处理嵌入模型的维度不匹配?
A:检查模型输出维度,调整向量存储配置:
  1. vectorstore = Milvus(..., dimension=1536)# 匹配 OpenAI 维度
复制代码
Q4:支持多模态嵌入吗?
A:部分模型(如 JinaEmbeddings)支持多模态,但 LangChain 主要聚焦文本嵌入。多模态需自定义实现。

总结

LangChain 支持多种嵌入模型,包括:





欢迎光临 AI创想 (http://llms-ai.com/) Powered by Discuz! X3.4