Open10

ローカルMarkdown文書を対象としてVector検索したい:続AIエージェントとMCPサーバを作る

ピン留めされたアイテム
@noriaki@noriaki

(情報開示と免責)

  • 私の所属はLINEヤフー社で、25年4月からLINEミニアプリの事業戦略に携わっています
  • コーディング、投稿・記事の作成に社内のコードやドキュメントは人/AIともに参照・接続せず公開情報のみ利用しています
  • ここでの投稿は私個人のものなので、特に明示しない限り所属する企業や団体には一切関係ありません
@noriaki@noriaki

仕様(要件)の作成とコーディング・実装は分担しようと思う。

  • 仕様(要件)の作成:試行錯誤するためにサブスクの範囲でClaude Desktop(や適宜他のAI Chat)を利用
  • コーディング・実装:まだここまで行ってないが、Claude CodeかCline (Roo Code)を使うつもり

Claude Desktop上で仕様・要件ドキュメント(英文のMarkdown)をArtifactとして作成する。

Claudeは仕様検討時にサンプルコードを作成したがるけど、実装時の柔軟性を残すために仕様・要件ドキュメントは抽象的な内容にしてもらうよう指示した。

@noriaki@noriaki

そういえば既存の他のソリューション候補は無いのか調べてみる。

MCPサーバ一覧のmodelcontextprotocol/servers: Model Context Protocol Serversから、 vector でページ内検索すると以下が候補としてあった。

Third-Party Servers

Official Integrations

  • Chroma - Embeddings, vector search, document storage, and full-text search with the open-source AI application database
  • Milvus - Search, Query and interact with data in your Milvus Vector Database.
  • Qdrant - Implement semantic memory layer on top of the Qdrant vector search engine
  • Vectorize - Vectorize MCP server for advanced retrieval, Private Deep Research, Anything-to-Markdown file extraction and text chunking.
@noriaki@noriaki

で、本命のMCPサーバ化はオフィシャルのMCPサーバ実装を試してみたけどダメだった

claude mcp add chroma -s project -- \
  $(whence -p uvx) chroma-mcp \
  --client-type http \
  --host localhost \
  --port 8080 \
  --ssl false

ローカルのMarkdown文書をChromaDBへ登録するとき、お手製スクリプトでOpenAIの text-embedding-3-small モデルを使ってEmbeddingしたけど、ChromaDBオフィシャルMCPサーバ実装だとドキュメント検索時のEmbeddingには独自モデルが使われてて、ベクトルの次元数が合わずエラーになった。