- 索引(Indexes)
- 链(Chains)
- 代理(Agents)
- 回调函数(Callbacks)
本文将介绍如何在LangChain中使用Embedding类。Embedding类是一种与嵌入交互的类。有很多嵌入提供商,如:OpenAI、Cohere、Hugging Face等,这个类旨在为所有这些提供一个标准接口。
嵌入创建文本的向量表示会很有用,因为这意味着我们可以在向量空间中表示文本,并执行类似语义搜索这样的操作。LangChain中的基本Embedding类公开两种方法:
embed_documents
:适用于多个文档embed_query
:适用于单个文档
将这两种方法作为两种不同的方法的另一个原因是一些嵌入提供商对于需要搜索的文档和查询(搜索查询本身)具有不同的嵌入方法,下面是文本嵌入的集成示例:
Aleph Alpha
使用Aleph Alpha的语义嵌入有两种可能的方法。如果我们有不同结构的文本(例如文档和查询),则我们使用非对称嵌入。相反,对于具有可比结构的文本,则建议使用对称嵌入的方法:
非对称
from langchain.embeddings import AlephAlphaAsymmetricSemanticEmbedding
document = "This is a content of the document"
query = "What is the content of the document?"
embeddings = AlephAlphaAsymmetricSemanticEmbedding()
doc_result = embeddings.embed\_documents([document])
query_result = embeddings.embed\_query(query)
对称
from langchain.embeddings import AlephAlphaSymmetricSemanticEmbedding
text = "This is a test text"
embeddings = AlephAlphaSymmetricSemanticEmbedding()
doc_result = embeddings.embed\_documents([text])
query_result = embeddings.embed\_query(text)
Amazon Bedrock
Amazon Bedrock是一个完全托管的服务,通过API提供了来自领先AI初创公司和亚马逊的FMs,因此您可以从广泛的FMs中选择最适合您的用例的模型。
%pip install boto3
from langchain.embeddings import BedrockEmbeddings
embeddings = BedrockEmbeddings(credentials_profile_name="bedrock-admin")
embeddings.embed\_query("This is a content of the document")
embeddings.embed\_documents(["This is a content of the document"])
Azure OpenAI
我们加载OpenAI Embedding类,并设置环境变量以指示使用Azure端点。
# 设置用于 OpenAI 包的环境变量,以指示使用 Azure 端点
import os
os.environ["OPENAI\_API\_TYPE"] = "azure"
os.environ["OPENAI\_API\_BASE"] = "https://<your-endpoint.openai.azure.com/"
os.environ["OPENAI\_API\_KEY"] = "your AzureOpenAI key"
os.environ["OPENAI\_API\_VERSION"] = "2023-03-15-preview"
from langchain.embeddings import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(deployment="your-embeddings-deployment-name")
text = "This is a test document."
query_result = embeddings.embed\_query(text)
doc_result = embeddings.embed\_documents([text])
Cohere
我们加载Cohere Embedding类:
from langchain.embeddings import CohereEmbeddings
embeddings = CohereEmbeddings(cohere_api_key=cohere_api_key)
text = "This is a test document."
query_result = embeddings.embed\_query(text)
doc_result = embeddings.embed\_documents([text])
DashScope
我们加载DashScope嵌入类:
from langchain.embeddings import DashScopeEmbeddings
embeddings = DashScopeEmbeddings(model='text-embedding-v1', dashscope_api_key='your-dashscope-api-key')
text = "This is a test document."
query_result = embeddings.embed\_query(text)
print(query_result)
doc_results = embeddings.embed\_documents(["foo"])
print(doc_results)
DashScope
我们加载DashScope嵌入类:
from langchain.embeddings import DashScopeEmbeddings
embeddings = DashScopeEmbeddings(model='text-embedding-v1', dashscope_api_key='your-dashscope-api-key')
text = "This is a test document."
query_result = embeddings.embed\_query(text)
print(query_result)
doc_results = embeddings.embed\_documents(["foo"])
print(doc_results)
Elasticsearch
使用Elasticsearch中托管的嵌入模型生成嵌入的操作步骤。通过下面的方式,可以很容易地实例化ElasticsearchEmbeddings
类。如果我们使用的是Elastic Cloud,则可以使用from_credentials
构造函数,如果我们使用的是Elasticsearch集群,则可以使用from_es_connection
构造函数:
!pip -q install elasticsearch langchain
import elasticsearch
![img](https://img-blog.csdnimg.cn/img_convert/f9805650568ba75f120774daa6d49bab.png)
![img](https://img-blog.csdnimg.cn/img_convert/58709505458285a44b369def5f0e176c.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**