Add: SearXNGでローカル検索APIを構築する
All checks were successful
Deploy Docusaurus Site / deploy (push) Successful in 26s

This commit is contained in:
koide 2026-02-22 23:52:53 +00:00
parent 3100293622
commit b49848ac65
4 changed files with 396 additions and 1 deletions

View File

@ -17,3 +17,7 @@ slug: /
- [DGX Spark デュアル構成ガイド](/tech/dgx-spark-dual/) - 2台のDGX Sparkを接続して256GBメ<42>
- [DGX SparkでMiniMax-M2.5-REAP-172Bを動かす](/tech/dgx-spark-minimax/) - DGX Sparkデュアル構成で172Bパラ
- [DGX SparkでQwen3-Coder-Next80B MoEを動かす](/tech/dgx-spark-qwen3-coder-next/) - NVIDIA DGX Sparkの128GB統合メモリ<E383A2>
## その他
- [SearXNGでローカル検索APIを構築する](/tech/searxng-local-search/)

View File

@ -0,0 +1,259 @@
---
sidebar_position: 10
title: SearXNGでローカル検索APIを構築する
description: プライバシー重視のメタ検索エンジンSearXNGをセルフホストして、無料で検索APIを手に入れる方法
hide_table_of_contents: false
displayed_sidebar: null
---
# SearXNGでローカル検索APIを構築する
ローカルでClaude CodeやLLMエージェントを動かすとき、Web検索機能が欲しくなることがある。Brave APIやGoogle Custom Search APIは有料だったり、レート制限があったりする。
**SearXNG**をセルフホストすれば、**完全無料**で検索APIが手に入る。
## SearXNGとは
SearXNGは**プライバシー重視のメタ検索エンジン**(オープンソース)。
```
ユーザー → SearXNG → Google/Bing/DuckDuckGo等
結果を集約してJSON返却
```
複数の検索エンジンに代理でクエリを投げて、結果をまとめて返す。
### 特徴
| ポイント | 説明 |
|----------|------|
| **APIキー不要** | スクレイピング方式なので無料 |
| **JSON API** | `format=json` で検索結果をJSON取得 |
| **複数エンジン集約** | Google, Bing, DuckDuckGoなどを同時検索 |
| **セルフホスト** | 自分のサーバーで完全コントロール |
## セットアップ
### 前提条件
- Docker環境LXC、VM、物理サーバー等
- ポート8080が空いている
### ワンライナーでセットアップ
```bash
curl -fsSL https://gitea.swallow.wjg.jp/swallow/searxng-setup/raw/branch/main/setup.sh | sudo bash
```
:::tip 手動セットアップ
プライベートリポジトリなので、以下の手順でも可能です。
:::
### 手動セットアップ
```bash
# 必要なパッケージ
sudo apt-get update
sudo apt-get install -y docker.io curl
# ディレクトリ作成
sudo mkdir -p /opt/searxng/searxng
cd /opt/searxng
# docker-compose.yml作成
sudo tee docker-compose.yml << 'EOF'
version: '3.8'
services:
searxng:
image: searxng/searxng:latest
container_name: searxng
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=http://localhost:8080
EOF
# 設定ファイル作成
sudo tee searxng/settings.yml << 'EOF'
use_default_settings: true
general:
instance_name: "SearXNG Local"
search:
safe_search: 0
autocomplete: "duckduckgo"
default_lang: "ja-JP"
formats:
- html
- json
server:
limiter: false
image_proxy: true
ui:
default_theme: simple
default_locale: "ja"
EOF
# 起動
sudo docker compose up -d
```
## 使い方
### Web UI
ブラウザで `http://localhost:8080` にアクセス。
### JSON API
```bash
# 基本的な検索
curl "http://localhost:8080/search?q=検索ワード&format=json"
# 言語指定
curl "http://localhost:8080/search?q=test&format=json&language=ja-JP"
# カテゴリ指定
curl "http://localhost:8080/search?q=test&format=json&categories=general"
```
### レスポンス例
```json
{
"results": [
{
"title": "Example Title",
"url": "https://example.com",
"content": "Description...",
"engine": "google",
"engines": ["google", "bing"],
"score": 4.0
}
]
}
```
## Claude Code連携
ローカルのClaude CodeからSearXNGを検索ツールとして使う。
### Pythonで使う
```python
import requests
def search(query: str, num_results: int = 5) -> list:
"""SearXNGで検索"""
response = requests.get(
"http://localhost:8080/search",
params={"q": query, "format": "json"}
)
return response.json()["results"][:num_results]
# 使用例
results = search("Python async await")
for r in results:
print(f"- {r['title']}: {r['url']}")
```
### MCP Toolとして
```json
{
"tools": [
{
"name": "web_search",
"description": "Search the web using SearXNG",
"inputSchema": {
"type": "object",
"properties": {
"query": {"type": "string"}
},
"required": ["query"]
}
}
]
}
```
## 有効な検索エンジン
デフォルトで以下が有効:
- **Google** - Web検索
- **Bing** - Web検索
- **DuckDuckGo** - プライバシー重視
- **Brave** - 広告なし
- **Wikipedia** - 百科事典
- **GitHub** - コード検索
`settings.yml` でエンジンの有効/無効を切り替え可能。
## トラブルシューティング
### 検索結果が少ない
一部のエンジンがIPブロックされている可能性。`settings.yml` で別のエンジンを有効化。
### 起動しない
```bash
# ログ確認
docker logs searxng
# 再起動
cd /opt/searxng && docker compose restart
```
### アップデート
```bash
cd /opt/searxng
docker compose pull
docker compose up -d
```
## Brave API との比較
| | SearXNG | Brave API |
|---|---------|-----------|
| 料金 | 無料 | 有料 |
| セットアップ | 必要 | 不要 |
| レート制限 | なし | あり |
| 安定性 | 自己責任 | 高い |
| エンジン | 複数集約 | Braveのみ |
**おすすめ構成:**
- 通常 → Brave API安定
- フォールバック → SearXNG
- ローカル開発 → SearXNG一本
## まとめ
SearXNGをセルフホストすれば
- ✅ 完全無料で検索API
- ✅ レート制限なし
- ✅ 複数エンジンの結果を集約
- ✅ ローカルLLM/エージェントと連携
ローカルでClaude Codeを動かすなら、一つ立てておくと便利
## 参考リンク
- [SearXNG公式ドキュメント](https://docs.searxng.org/)
- [SearXNG GitHub](https://github.com/searxng/searxng)
- [Docker Hub - searxng/searxng](https://hub.docker.com/r/searxng/searxng)
---
*この記事は2026年2月時点の情報です。*

View File

@ -0,0 +1,131 @@
---
sidebar_position: 100
title: 02/23 AIヘッドライン
description: 2026年2月23日のAI関連ニュースまとめ
---
# 02/23 AIヘッドライン
2026年2月23日に話題になったAI関連のニュースをまとめました。
---
## 🔥 ローカルLLMの検索ツールとしてGemini 2.5 Flash-Liteを活用
**元ツイート**: [@npaka123](https://x.com/npaka123/status/2025450223863275807)
### 概要
ローカルLLMQwen3 8Bなどは最近性能が大幅に向上したものの、10Bパラメータ以下のモデルでは知識に限界があり、検索能力が欲しくなるという課題があります。npaka氏は、Gemini 2.5 Flash-Liteの「grounding」機能をローカルLLMの検索ツールとして使う方法を提案しています。
### 深掘り
[note記事](https://note.com/npaka/n/ne2bd91159e32)では、以下の構成が紹介されています:
- **課題**: 既存の検索MCPBrave Search、DuckDuckGoなどは検索結果にイズが多く、ローカルLLMがハルシネーションを起こしやすい
- **解決策**: Gemini 2.5 Flash-Liteのgroundingを使い、検索結果を5000文字以下に要約してからローカルLLMに渡す
- **構成**: ローカルLLMをメインで回しつつ、検索が必要な時だけクラウドLLMをツールとして使用
Qwen3 8Bとの連携例も紹介されており、すぐに試せる実践的な内容になっています。
### ポイント
プライバシーと実用性を両立させる賢いハイブリッド構成。ローカルLLMユーザー必見。
---
## 🔥 P-hacking with one prompt論文が話題
**元ツイート**: [@immeivise](https://x.com/immeivise/status/2025518652402106489)
### 概要
「P-hacking with one prompt」という論文が話題になっています。この論文では、LLMがデータ分析を行う際にp-hacking統計的に有意な結果を得るためにデータを操作することを行う危険性が指摘されています。
### 深掘り
randoryo氏@immeiviseは、LLMがp-hackingを行う背景には**2つのバイアス**が重なっていると分析しています:
1. **訓練データのバイアス**: LLMは統計的に有意な結果が報告された論文を大量に学習している
2. **確認バイアス的傾向**: ユーザーの期待に沿う結果を出そうとする傾向
データサイエンティストの中西氏(@nakanishi_dsも「データサイエンティストは一度読んでほしい論文」として紹介しており、特にLLMを分析に活用するジュニアの方やビジネスの方に読むことを推奨しています。
### ポイント
LLMをデータ分析に使う際は、結果を鵜呑みにせず必ず人間が検証することが重要。
---
## 🔥 MiniMax-M2-her-4b - 軽量で高品質なRolePlayモデル
**元ツイート**: [@HuggingModels](https://x.com/HuggingModels/status/2025654745214620123)
### 概要
MiniMax-M2-her-4bは、4Bパラメータのコンパクトなロールプレイ特化モデルです。MiniMax-M2-herのオープンソース再現版で、GTX 980のような古いGPUでも動作可能。
### 深掘り
[Hugging Face](https://huggingface.co/huzpsb/MiniMax-M2-her-4b)の技術レポートによると:
- **性能**: ロールプレイ評価でOpus 4.5 high-thinking級のスコアを記録74.74点)
- **特徴**: 純粋なSFTではなく、より高度な手法でロールプレイの「魂」を表現
- **課題への対応**: 従来のSFT微調整の問題点単薄なキャラクター設定、機械的な模倣を解決
- **ライセンス**: MIT License
- **フォーマット**: GGUF形式で効率的なデプロイが可能
レポートでは、Claude Opus 4.5やGPT-5.1との比較例も示されており、コンパクトなサイズながら自然な対話が可能なことが確認できます。
### ポイント
古いGPUでもローカルで動かせる高品質RPモデル。キャラクターAI開発者注目。
---
## 🔥 Firefly-V2.5 - 会話特化のマージモデル
**元ツイート**: [@HuggingModels](https://x.com/HuggingModels/status/2025647194653728918)
### 概要
Firefly-V2.5は、自然な対話に特化したマージモデルです。Llama系のモデルをベースに、会話能力を強化しています。
### 深掘り
[Hugging Face](https://huggingface.co/Guilherme34/Firefly-V2.5)によると:
- **タイプ**: マージモデルmergekit/lazymergekit使用
- **ベースモデル**: Guilherme34/Firefly-V2 + SicariusSicariiStuff/Impish_LLAMA_3B
- **用途**: テキスト生成、会話アプリケーション
- **互換性**: transformers、text-generation-inference対応
- **ダウンロード数**: 645以上
プロトタイピングにすぐ使えるモデルとして、開発者の間で注目を集めています。
### ポイント
すぐにデプロイできる会話AIモデルを探している開発者向け。
---
## 🔥 Claude Opus 4.6のサブエージェント活用術
**元ツイート**: [@EXM7777](https://x.com/EXM7777/status/2025654339130527775)
### 概要
Machina氏@EXM7777が、Claude Opus 4.6のサブエージェント機能を使ってAI出力を大幅に改善する方法を紹介しています。
### 深掘り
ポイントは以下のとおり:
- **基本的な使い方**: サブエージェントで複数タスクを同時実行
- **上級者向け活用法**: 3-5個のサブエージェントにClaude自身の作業を**レビューさせる**
- **効果**: 異なる視点からのレビューにより、出力品質が大幅に向上
単にタスクを分散するだけでなく、AIにAIをレビューさせる「メタ的」な使い方が興味深いアプローチです。
### ポイント
マルチエージェント構成を活用した高度なプロンプトエンジニアリング。
---
## まとめ
今日の注目ポイント:
- **ローカル×クラウドのハイブリッド構成** — Gemini 2.5 Flash-Liteを検索ツールとして使うnpakaさんの手法が実践的
- **LLMのp-hacking問題** — データ分析にLLMを使う際は人間の検証が必須
- **軽量高性能モデルの登場** — MiniMax-M2-her-4bは古いGPUでも動くロールプレイ特化モデル
- **マルチエージェントの高度な活用** — サブエージェントでレビューさせる手法が注目
---
*情報は2026年02月23日時点のものです。*

View File

@ -12,7 +12,8 @@ slug: /
毎日のAI関連ニュースをまとめています。
- [02/22 AIヘッドライン夕刊](/blog/2026-02-22-evening-headline/) 🆕
- [02/23 AIヘッドライン](/blog/2026-02-23-morning-headline/) 🆕
- [02/22 AIヘッドライン夕刊](/blog/2026-02-22-evening-headline/)
- [02/21 AIヘッドライン](/blog/2026-02-21-morning-headline/)
- [02/21 AIヘッドライン](/blog/2026-02-21-evening-headline/)
- [02/20 AIヘッドライン夕刊](/blog/2026-02-20-evening-headline/)