跳至主要內容

SearXNG 搜尋

開放原始碼: https://github.com/searxng/searxng

公開執行個體: https://searx.space/

總覽

SearXNG 是一個免費、開放原始碼的 metasearch 引擎,會彙整來自多個搜尋引擎的結果,同時保護使用者隱私。它可以自我託管,或透過公開執行個體使用。

注意: SearXNG 每頁會回傳固定數量的結果(預設約 20 筆),且不支援透過 API 限制結果數量。max_results 參數不受 SearXNG 直接支援。

LiteLLM Python SDK

SearXNG Search
import os
from litellm import search

# Set your SearXNG instance URL (REQUIRED)
os.environ["SEARXNG_API_BASE"] = "https://serxng-deployment-production.up.railway.app"

response = search(
query="latest AI developments",
search_provider="searxng",
max_results=10
)

LiteLLM AI 閘道

1. 設定 config.yaml

config.yaml
model_list:
- model_name: gpt-4
litellm_params:
model: gpt-4
api_key: os.environ/OPENAI_API_KEY

search_tools:
- search_tool_name: searxng-search
litellm_params:
search_provider: searxng
api_base: https://serxng-deployment-production.up.railway.app

2. 啟動 proxy

litellm --config /path/to/config.yaml

# RUNNING on http://0.0.0.0:4000

3. 測試搜尋端點

Test Request
curl http://0.0.0.0:4000/v1/search/searxng-search \
-H "Authorization: Bearer sk-1234" \
-H "Content-Type: application/json" \
-d '{
"query": "latest AI developments",
"max_results": 10
}'

提供者特定參數

SearXNG Search with Provider-specific Parameters
import os
from litellm import search

# REQUIRED: Set your SearXNG instance URL
os.environ["SEARXNG_API_BASE"] = "https://serxng-deployment-production.up.railway.app"

response = search(
query="machine learning research",
search_provider="searxng",
max_results=10,
# SearXNG-specific parameters
categories="general,science", # Comma-separated categories
engines="google,duckduckgo,bing", # Comma-separated engines
language="en", # Language code
pageno=1, # Page number
time_range="month" # Time filter: day, month, year
)

功能

SearXNG 提供強大的 metasearch 功能:

多個搜尋引擎

同時彙整來自多個搜尋引擎的結果:

  • Google、DuckDuckGo、Bing、Brave
  • Wikipedia、Startpage
  • 以及更多

分類

在特定分類中搜尋:

  • general - 一般網頁搜尋
  • science - 科學文章與論文
  • images - 圖片搜尋
  • news - 新聞文章
  • videos - 影片內容
  • music - 音樂與音訊
  • files - 檔案搜尋
  • it - IT 與技術
  • map - 地圖與位置

依時間篩選

依時間範圍篩選結果:

  • day - 過去一天
  • month - 過去一個月
  • year - 過去一年

注重隱私

  • 不追蹤使用者
  • 不需要 Cookie
  • 不進行個人檔案分析
  • 無廣告

語言支援

支援 60+ 種語言,並可使用 language 參數。

自我託管

SearXNG 可自我託管以獲得完整控制權。

快速部署

使用我們預先設定好的部署儲存庫,輕鬆完成設定:

Fork 並部署:github.com/BerriAI/serxng-deployment

此儲存庫包含:

  • Docker 與 Docker Compose 設定
  • 已預先設定好的 JSON API 格式
  • 可直接部署

手動安裝

請參閱官方 SearXNG 安裝說明以進行詳細設定。

重要: 安裝 SearXNG 時,預設唯一啟用的輸出格式是 HTML 格式。您需要啟用 JSON 格式才能使用 API。

將下列內容新增到您的 settings.yml 檔案:

search:
formats:
- html
- json

接著重新啟動 SearXNG:

# Using Docker
docker run -d -p 8080:8080 \
-v $(pwd)/settings.yml:/etc/searxng/settings.yml:ro \
-e SEARXNG_BASE_URL=http://localhost:8080 \
searxng/searxng

# Then configure LiteLLM to use your instance
export SEARXNG_API_BASE=http://localhost:8080

設定

設定 API Base URL(必要)

必須透過環境變數或在搜尋請求中指定 SearXNG 執行個體 URL:

# Option 1: Environment variable (Recommended)
import os
os.environ["SEARXNG_API_BASE"] = "https://your-instance.com"

response = search(
query="AI developments",
search_provider="searxng"
)

# Option 2: Pass directly in search call
response = search(
query="AI developments",
search_provider="searxng",
api_base="https://your-instance.com"
)

注意: 沒有預設的執行個體 URL。您必須選擇公開執行個體或自我託管自己的執行個體。

可選驗證

某些 SearXNG 執行個體可能需要驗證:

import os

# Set API key if required
os.environ["SEARXNG_API_KEY"] = "your-api-key"

response = search(
query="AI developments",
search_provider="searxng"
)

成本

SearXNG 完全免費:

  • 開放原始碼 - 無授權成本
  • 自我託管 - 僅有基礎設施成本
  • 公開執行個體 - 通常免費,請查看執行個體政策

進階用法

自訂引擎選擇

response = search(
query="Python tutorials",
search_provider="searxng",
engines="stackoverflow,github,reddit", # Only search these engines
categories="it"
)
response = search(
query="climate change",
search_provider="searxng",
categories="general,science,news", # Search multiple categories
time_range="month"
)

分頁

# Get page 1
page1 = search(
query="AI research",
search_provider="searxng",
pageno=1
)

# Get page 2
page2 = search(
query="AI research",
search_provider="searxng",
pageno=2
)

回應格式

SearXNG 會以標準 LiteLLM 搜尋格式回傳結果:

{
"object": "search",
"results": [
{
"title": "Example Result",
"url": "https://example.com",
"snippet": "This is the content snippet from the search result...",
"date": "2024-01-15",
"last_updated": null
}
]
}

疑難排解

先測試您的執行個體

如果 LiteLLM 搭配 searxng 搜尋提供者無法運作,請使用 curl 直接測試您的 SearXNG 執行個體:

# Test if JSON API is working
curl -s "https://your-searxng-instance.com/search?q=test&format=json" | head -50

# Example with specific instance
curl -s "https://serxng-deployment-production.up.railway.app/search?q=test&format=json" | head -50

預期回應:包含搜尋結果的 JSON
如果您得到 HTML:該執行個體的 settings.yml 未啟用 JSON 格式

沒有結果

如果您沒有得到結果:

  1. 嘗試不同的引擎:指定 engines 參數
  2. 擴大分類範圍:使用多個分類
  3. 調整語言:設定適當的 language 參數

未啟用 JSON 格式

如果您得到的是 HTML 而不是 JSON:

  1. 使用 curl 測試:使用上方的 curl 指令來驗證 JSON 輸出
  2. 自我託管您自己的執行個體:使用我們的部署儲存庫,其中已預先設定 JSON
  3. 檢查執行個體設定:並非所有公開執行個體都已啟用 JSON
  4. 手動啟用 JSON:新增到 settings.yml
    search:
    formats:
    - html
    - json