赞
踩
- [基础知识]( )
- [自定义工具(Custom Tools)]( )
- [多输入工具和工具输入模式]( )
- [人工确认工具验证和Tools作为OpenAI函数]( )
+ [工具包(Toolkit)]( )
+ 代理执行器(Agent Executor)
- [结合使用Agent和VectorStore]( )
- [使用Agents的异步API和创建ChatGPT克隆]( )
- [处理解析错误、访问中间步骤和限制最大迭代次数]( )
- [为代理程序设置超时时间和限制最大迭代次数和为代理程序和其工具添加共享内存]( )
+ [计划与执行]( )
本文将介绍如何在LangChain中使用Embedding类。Embedding类是一种与嵌入交互的类。有很多嵌入提供商,如:OpenAI、Cohere、Hugging Face等,这个类旨在为所有这些提供一个标准接口。
嵌入创建文本的向量表示会很有用,因为这意味着我们可以在向量空间中表示文本,并执行类似语义搜索这样的操作。LangChain中的基本Embedding类公开两种方法:
embed_documents
:适用于多个文档embed_query
:适用于单个文档将这两种方法作为两种不同的方法的另一个原因是一些嵌入提供商对于需要搜索的文档和查询(搜索查询本身)具有不同的嵌入方法,下面是文本嵌入的集成示例:
使用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是一个完全托管的服务,通过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"])
我们加载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 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嵌入类:
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嵌入类:
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中托管的嵌入模型生成嵌入的操作步骤。通过下面的方式,可以很容易地实例化ElasticsearchEmbeddings
类。如果我们使用的是Elastic Cloud,则可以使用from_credentials
构造函数,如果我们使用的是Elasticsearch集群,则可以使用from_es_connection
构造函数:
!pip -q install elasticsearch langchain
import elasticsearch
from langchain.embeddings.elasticsearch import ElasticsearchEmbeddings
# 定义模型 ID
model_id = 'your\_model\_id'
如果我们希望使用from_credentials
进行测试,那么我们需要Elastic Cloud的cloud_id:
# 使用凭据实例化 ElasticsearchEmbeddings embeddings = ElasticsearchEmbeddings.from\_credentials( model_id, es_cloud_id='your\_cloud\_id', es_user='your\_user', es_password='your\_password' ) # 为多个文档创建嵌入 documents = [ 'This is an example document.', 'Another example document to generate embeddings for.' ] document_embeddings = embeddings.embed\_documents(documents) ![img](https://img-blog.csdnimg.cn/img_convert/e4a6fa8502fcb3261508e234c52e47d4.png) ![img](https://img-blog.csdnimg.cn/img_convert/ec742361191b32659c248fedb8ff2e01.png) **网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。** **[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)** **一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!** 题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。** **[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)** **一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。