Repository navigation
feat(search): add document path-prefix filter #252
Copy link
Copy link
Closed
Labels
enhancement新機能・改善要望新機能・改善要望ready本文が実装開始できる形まで収束している状態。ただし更新は継続可能本文が実装開始できる形まで収束している状態。ただし更新は継続可能review-pending実装フェーズ完了。orchestration (brake eval / review / merge / close) 待ち実装フェーズ完了。orchestration (brake eval / review / merge / close) 待ち
Description
目的
search に任意の path_prefix structured filter を追加し、既存リポジトリ内の専用ディレクトリを独立した文書検索母集合として扱えるようにする。Neuron Graph RAG との再現可能な検索性能比較で、通常文書を候補へ混入させず固定 Markdown コーパスだけを検索できることを直接の利用例とする。
前提
doc_pathは doc vector metadata と D1search_docs.doc_pathの両方へ既に格納されている。- Cloudflare Vectorize の metadata index は1 indexあたり最大10 propertyで、現構成は10枠を使用済み。
assignee_1は将来の pre-filter 用に保存されているだけで、現行の assignee filter は post-filter である。公式上限: https://developers.cloudflare.com/vectorize/platform/limits/ - Cloudflare Vectorize は string metadata の
$gte/$ltrange による prefix search を提供する。ただし対象 property の metadata index が必要で、index 作成前に upsert された vector は再 upsert しない限りその index に含まれない。公式仕様: https://developers.cloudflare.com/vectorize/reference/metadata-filtering/ - sparse 側は
search_docs.doc_pathの range predicate、scan 側はDocRecord.pathの prefix 判定で同じ母集合を選べる。
制約
- 初期契約では
path_prefixはtype: "doc"と組み合わせた場合だけ有効とする。その他の type、type: "all"、type 省略との併用は入力エラーにする。 - 値は
/から始まらない repository-relative directory prefix とし、末尾/を必須にする。空文字、空 segment、./..path segment、backslash、NUL を拒否する。 - Vectorize string metadata index が先頭 64 bytes だけを索引する制約に合わせ、UTF-8 で 64 bytes 以下にする。
- metadata index の10枠上限を守るため、未使用の将来用
assignee_1index を削除してdoc_pathindex を作る。vector metadata 自体のassignee_1は保持し、現行の assignee post-filter は変えない。 - 末尾
/の次の文字境界を upper bound とし、dense / sparse 側はdoc_path >= prefix AND doc_path < upperBoundの同じ半開区間、scan 側は同じ範囲を store query へ押し下げたうえでstartsWith(prefix)を最終確認に用いる。結果末尾だけの post-filter にして候補枯れを起こしてはならない。 - fetch mode (
vector_ids) は既存どおり全 metadata filter を無視する。 - Worker と stdio bridge の tool schema、英日要件文書、導入手順を同じ PR で同期する。
- 既存の検索結果と filter 未指定時の動作を変えない。
- 新規リポジトリは作成しない。
対象ファイル
src/mcp.ts: 入力契約、dense filter、各 mode への引き渡し、説明文src/path-prefix.ts: validation と共通の半開区間src/fts.ts: sparse prefix pre-filter と filter 不成立 probesrc/store.ts/src/scan.ts: scan prefix の store query pushdown と最終確認migrations/0007_doc_path_prefix.sql: repository / doc type / path range probe indexsrc/*.test.ts: 入力契約・search / scan 回帰mcp-server/server/tools.jsと bridge schema tests: static schema mirrordocs/0-requirements.md/docs/0-requirements.ja.md: structured filter の規範docs/installation.md/docs/installation.ja.md:doc_pathmetadata index と既存 vector の再 index 手順README.md/README.ja.md: tool parameter 一覧
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancement新機能・改善要望新機能・改善要望ready本文が実装開始できる形まで収束している状態。ただし更新は継続可能本文が実装開始できる形まで収束している状態。ただし更新は継続可能review-pending実装フェーズ完了。orchestration (brake eval / review / merge / close) 待ち実装フェーズ完了。orchestration (brake eval / review / merge / close) 待ち
Activity
lipluscodex commentedon Sep 9, 2026
リリース進行状況
v0.11.0 の GitHub Release は
origin/mainの1a826baad05e8c657ea14e53e8c8bf0bac5efdf6を対象に公開済みです。MCPB の生成・Release への添付、およびorigin/main:docs/*.mdから Wiki への同期は成功しました。CD run https://github.com/Liplus-Project/github-rag-mcp/actions/runs/34331464517 では
npm-publishだけが失敗しています。失敗 job を一度再実行しましたが、npm publish --access public --tag latestが同じ E404(package publish permission)で失敗し、npm registry の公開版は 0.10.2 のままです。再開条件は、GitHub Actions の
NPM_TOKENまたは npm package publish 権限を復旧したうえで、同 run の failed job を再実行できることです。Release、タグ、MCPB、Wiki は削除・巻き戻ししていません。 #252lipluscodex commentedon Sep 9, 2026
リリース回復完了
npm publish 資格情報の復旧後、CD run https://github.com/Liplus-Project/github-rag-mcp/actions/runs/34331464517 の失敗 job を再実行し、
build-mcpb、attach-mcpb、npm-publishの全 job が成功しました。npm registry で
github-rag-mcp@0.11.0と dist-taglatest=0.11.0を確認しました。公開 tarball 内のpackage/server/tools.jsには、searchinput schema の文字列 property としてpath_prefixが含まれています。秘密値の読み取りや出力、追加のソース変更は行っていません。 #252