Skip to main content
Glama
KimTsegzc

xinPlugin_Chroma_fastMCP

by KimTsegzc

xinPlugin_Chroma_fastMCP

MinIO ナレッジベースのベクトル検索レイヤー:MinIO にアップロードされたドキュメント(PDF/txt/md)からテキストを抽出 → チャンク分割 → ベクトル化して Chroma に格納し、FastMCP 経由で「検索」を MCP ツールとして公開します。DSH(DeepSeek Harness)の dsh-mcp-client が接続し、エージェントは Q&A 時に原文を直接検索できます。

構成

ファイル

役割

chroma_store.py

Chroma の永続化 + チャンク分割(ページ番号/行番号付き)+ ハイブリッド検索(セマンティック + 文字バイグラム BM25、RRF 融合)

ingest.py

CLI 取り込み:python ingest.py <文件> [source名]、JSON サマリーを出力(MinIO プラグインとの連携呼び出し用)

server.py

FastMCP stdio サービス、search / ingest_file / list_sources を公開

requirements.txt

chromadb / fastmcp / pypdf

Related MCP server: Modular RAG MCP Server

インストール

pip install -r requirements.txt
# 首次检索会下载默认 embedding(all-MiniLM-L6-v2,约 80MB,缓存在 ~/.cache/chroma)

使用

# 入库
python ingest.py "广州十五五规划.pdf" "广州十五五规划.pdf"

# 检索(或经 MCP 工具 search)
python -c "from chroma_store import search; import json; print(json.dumps(search('广州 人工智能+ 大模型 算力 数据要素', 6), ensure_ascii=False))"

MCP ツール

  • search(query, top_k=6):セマンティック + キーワードのハイブリッド検索。原文の断片と出典(ファイル + ページ番号 + 行番号)を返します。

  • ingest_file(path, source_name):ローカルファイルの取り込み。

  • list_sources():取り込み済みソースの一覧を表示します。

DSH 側は stdio で server.py に接続し(dsh-mcp-client)、ツール名は mcp__chroma__search の形式になります。

検索の仕組み

  • チャンク分割:ページごとにテキストを抽出し、ヘッダー/フッター/ページ番号のノイズを除去。6 行ごとに 1 チャンク(1 行オーバーラップ)として、メタデータに source/page/line_start/line_end を記録します。

  • ハイブリッド検索:Chroma のセマンティックベクトル(コサイン)+ 文字バイグラムBM25 スパース検索、RRF 融合——中国語のセマンティック embedding が弱い場合でも、BM25 が「大規模モデル/計算力/データ要素」のような正確なキーワードを拾い上げ、出典の特定を安定させます。

  • 取り込み時にスパースキャッシュを無効化し、重複取り込みは上書き更新します。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to search, deep-read, and build knowledge bases from Markdown, PDF, DOCX, and PPTX documents via MCP tools for retrieval, document navigation, and ingestion.
    21 npm
    645
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server that indexes a knowledge base into Chroma and provides search tools for retrieving document fragments via vector embeddings.
    -