当前位置: 首页 > news >正文

自然语言处理从入门到应用——LangChain:模型(Models)-[文本嵌入模型Ⅰ]

分类目录:《自然语言处理从入门到应用》总目录


本文将介绍如何在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 BedrockEmbeddingsembeddings = 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 osos.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 OpenAIEmbeddingsembeddings = 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
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)# 打印文档嵌入
for i, embedding in enumerate(document_embeddings):print(f"文档 {i+1} 的嵌入:{embedding}")# 为单个查询创建嵌入
query = 'This is a single query.'
query_embedding = embeddings.embed_query(query)# 打印查询嵌入
print(f"查询的嵌入:{query_embedding}")

同时,我们可以使用现有的Elasticsearch客户端连接进行测试,这可用于任何Elasticsearch部署:

# 创建 Elasticsearch 连接
es_connection = Elasticsearch(hosts=['https://es_cluster_url:port'], basic_auth=('user', 'password')
)
# 使用 es_connection 实例化 ElasticsearchEmbeddings
embeddings = ElasticsearchEmbeddings.from_es_connection(model_id,es_connection,
)
# 为多个文档创建嵌入
documents = ['This is an example document.', 'Another example document to generate embeddings for.'
]
document_embeddings = embeddings.embed_documents(documents)# 打印文档嵌入
for i, embedding in enumerate(document_embeddings):print(f"文档 {i+1} 的嵌入:{embedding}")# 为单个查询创建嵌入
query = 'This is a single query.'
query_embedding = embeddings.embed_query(query)# 打印查询嵌入
print(f"查询的嵌入:{query_embedding}")

参考文献:
[1] LangChain 🦜️🔗 中文网,跟着LangChain一起学LLM/GPT开发:https://www.langchain.com.cn/
[2] LangChain中文网 - LangChain 是一个用于开发由语言模型驱动的应用程序的框架:http://www.cnlangchain.com/

http://www.lryc.cn/news/99191.html

相关文章:

  • 使用Gradio构建生成式AI应用程序; Stability AI推出Stable Diffusion XL 1.0
  • Java 递归计算斐波那契数列指定位置上的数字
  • ai数字人透明屏的应用场景有哪些?
  • 一、1、Hadoop的安装与环境配置
  • 剑指YOLOv7改进最新MPDIoU损失函数(23年7月首发论文):论文实测YOLOv7模型涨点,超越现有多种G/D/C/EIoU,高效准确的边界框回归的损失
  • 前端JavaScript面试100问(上)
  • C语言第九课------------------数组----------------C中之将
  • MySQL的安装
  • 在Chrome(谷歌浏览器)中安装Vue.js devtools开发者工具及解决Vue.js not detected报错
  • 用Python实现概率矩阵分解(PMF)算法在MovieLens ml-100k数据集上构建精确的推荐系统:深入理解GroupLens数据的操作
  • WPF icon的设置
  • 使用frp中的xtcp映射穿透指定服务实现不依赖公网ip网速的内网穿透p2p
  • 2023-07-28 LeetCode每日一题(并行课程 III)
  • 8.11 PowerBI系列之DAX函数专题-TopN中实现N的动态
  • 后端性能测试的类型
  • 关闭Tomcat的日志输出
  • express 路由匹配和数据获取
  • 62 | Python 操作 PDF
  • [SQL挖掘机] - 左连接: left join
  • Android 之 使用 SoundPool 播放音效
  • 防火墙的ALG、NAT、双机热备知识点详解
  • 传染病模型
  • 一百三十七、Hive——HQL运行报错(持续更新中)
  • Spring Boot配置加密实践
  • SwiftUI-基础
  • vue。cli怎么使用自定义组件,会有哪些问题
  • linux----vim的使用
  • 95. Python基础教程:异常处理try...except语句
  • 详解rocketMq通信模块升级构想
  • 【BOOST程序库】对字符串的处理