Add: SearXNGでローカル検索APIを構築する
All checks were successful
Deploy Docusaurus Site / deploy (push) Successful in 26s
All checks were successful
Deploy Docusaurus Site / deploy (push) Successful in 26s
This commit is contained in:
parent
3100293622
commit
b49848ac65
@ -17,3 +17,7 @@ slug: /
|
|||||||
- [DGX Spark デュアル構成ガイド](/tech/dgx-spark-dual/) - 2台のDGX Sparkを接続して256GBメ<42>
|
- [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でMiniMax-M2.5-REAP-172Bを動かす](/tech/dgx-spark-minimax/) - DGX Sparkデュアル構成で172Bパラ
|
||||||
- [DGX SparkでQwen3-Coder-Next(80B MoE)を動かす](/tech/dgx-spark-qwen3-coder-next/) - NVIDIA DGX Sparkの128GB統合メモリ<E383A2>
|
- [DGX SparkでQwen3-Coder-Next(80B MoE)を動かす](/tech/dgx-spark-qwen3-coder-next/) - NVIDIA DGX Sparkの128GB統合メモリ<E383A2>
|
||||||
|
|
||||||
|
## その他
|
||||||
|
|
||||||
|
- [SearXNGでローカル検索APIを構築する](/tech/searxng-local-search/)
|
||||||
|
|||||||
259
docs-tech/searxng-local-search/index.md
Normal file
259
docs-tech/searxng-local-search/index.md
Normal 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月時点の情報です。*
|
||||||
131
docs/2026-02-23-morning-headline/index.md
Normal file
131
docs/2026-02-23-morning-headline/index.md
Normal 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)
|
||||||
|
|
||||||
|
### 概要
|
||||||
|
ローカルLLM(Qwen3 8Bなど)は最近性能が大幅に向上したものの、10Bパラメータ以下のモデルでは知識に限界があり、検索能力が欲しくなるという課題があります。npaka氏は、Gemini 2.5 Flash-Liteの「grounding」機能をローカルLLMの検索ツールとして使う方法を提案しています。
|
||||||
|
|
||||||
|
### 深掘り
|
||||||
|
[note記事](https://note.com/npaka/n/ne2bd91159e32)では、以下の構成が紹介されています:
|
||||||
|
|
||||||
|
- **課題**: 既存の検索MCP(Brave 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日時点のものです。*
|
||||||
@ -12,7 +12,8 @@ slug: /
|
|||||||
|
|
||||||
毎日のAI関連ニュースをまとめています。
|
毎日の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-morning-headline/)
|
||||||
- [02/21 AIヘッドライン(夕)](/blog/2026-02-21-evening-headline/)
|
- [02/21 AIヘッドライン(夕)](/blog/2026-02-21-evening-headline/)
|
||||||
- [02/20 AIヘッドライン(夕刊)](/blog/2026-02-20-evening-headline/)
|
- [02/20 AIヘッドライン(夕刊)](/blog/2026-02-20-evening-headline/)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user