이 페이지는 LangChain 내에서 SearxNG search API를 사용하는 방법을 다룹니다. 설치 및 설정, 그리고 특정 SearxNG API wrapper에 대한 참조, 이렇게 두 부분으로 나뉩니다.

설치 및 설정

공개 searx 인스턴스와 함께 wrapper를 사용하는 것이 가능하지만, 이러한 인스턴스는 API 액세스를 허용하지 않는 경우가 많고(아래 출력 형식에 대한 참고 사항 참조) 요청 빈도에 제한이 있습니다. 대신 자체 호스팅 인스턴스를 선택하는 것이 권장됩니다.

자체 호스팅 인스턴스:

설치 지침은 이 페이지를 참조하세요. SearxNG를 설치할 때 기본적으로 활성화된 유일한 출력 형식은 HTML 형식입니다. API를 사용하려면 json 형식을 활성화해야 합니다. 이는 settings.yml 파일에 다음 줄을 추가하여 수행할 수 있습니다:
search:
    formats:
        - html
        - json
API endpoint에 curl 요청을 실행하여 API가 작동하는지 확인할 수 있습니다: curl -kLX GET --data-urlencode q='langchain' -d format=json http://localhost:8888 이는 결과가 포함된 JSON 객체를 반환해야 합니다.

Wrappers

Utility

wrapper를 사용하려면 다음 방법으로 SearxNG 인스턴스의 host를 wrapper에 전달해야 합니다:
  1. 인스턴스 생성 시 named parameter searx_host 사용.
  2. 환경 변수 SEARXNG_HOST 내보내기.
wrapper를 사용하여 SearxNG 인스턴스에서 결과를 가져올 수 있습니다.
from langchain_community.utilities import SearxSearchWrapper
s = SearxSearchWrapper(searx_host="http://localhost:8888")
s.run("what is a large language model?")

Tool

이 wrapper를 Tool로 로드할 수도 있습니다(Agent와 함께 사용). 다음과 같이 수행할 수 있습니다:
from langchain_community.agent_toolkits.load_tools import load_tools
tools = load_tools(["searx-search"],
                    searx_host="http://localhost:8888",
                    engines=["github"])
선택적으로 사용할 custom engines를 전달할 수 있습니다. 메타데이터가 포함된 결과를 json으로 얻으려면 다음을 사용할 수 있습니다:
tools = load_tools(["searx-search-results-json"],
                    searx_host="http://localhost:8888",
                    num_results=5)

빠르게 tools 생성하기

이 예제는 동일한 wrapper에서 여러 tools를 생성하는 빠른 방법을 보여줍니다.
from langchain_community.tools.searx_search.tool import SearxSearchResults

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

arxiv_tool = SearxSearchResults(name="Arxiv", wrapper=wrapper,
                            kwargs = {
                                "engines": ["arxiv"]
                                })
tools에 대한 자세한 내용은 이 페이지를 참조하세요.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I