firebase-dataconnect-bootstrap
v1.2.1
Published
Bootstrap Firebase Data Connect and Firestore onDocumentWritten function setup in any repository.
Maintainers
Readme
firebase-dataconnect-bootstrap
Firebase Data Connect と Cloud Functions のセットアップを自動化する CLI です。
初期作成だけでなく、再実行で設定変更(途中更新)もできます。
できること
.firebasercとfirebase.jsonの生成/更新dataconnect/初期ファイル生成functions/未初期化時の最小構成作成- Firestore
onDocumentWrittenの生成/更新 - ベクトル検索用
onRequest関数の生成/更新 - 埋め込み実装差し替え用
vectorSearchEmbeddingテンプレート生成 - 前回設定を
.firebase-dataconnect-bootstrap.jsonに保存し、次回実行時に再利用
使い方
npx firebase-dataconnect-bootstrap対話モードは日本語で質問が表示されます。
同じリポジトリで再実行すると、保存済み設定を初期値として設定変更できます。
既存設定がある場合は、対話中に「新しいコレクション設定を追加するか」を選べます。
追加コレクションを非対話で追加する例
npx firebase-dataconnect-bootstrap \
--yes \
--add-collection \
--target . \
--project your-firebase-project-id \
--document 'articles/{articleId}' \
--function onArticlesWritten \
--vector-search \
--vector-collection 'articles' \
--source-text-field 'body' \
--vector-field 'embedding' \
--search-fields 'title,body,updatedAt' \
--search-function 'searchArticlesByVector' \
--top-k 8 \
--no-install非対話モード例
npx firebase-dataconnect-bootstrap \
--yes \
--target . \
--project your-firebase-project-id \
--region asia-northeast1 \
--service your-service-id \
--location asia-northeast1 \
--document 'meetingSummaries/{summaryId}' \
--function onMeetingSummaryWritten \
--vector-search \
--vector-collection 'meetingSummaries' \
--source-text-field 'summary' \
--vector-field 'embedding' \
--search-fields 'title,summary,createdAt' \
--search-function 'searchByVector' \
--top-k 5 \
--install主なオプション
--config <name>: 設定保存ファイル名(既定:.firebase-dataconnect-bootstrap.json)--add-collection: 再実行時に既存設定へ新しいコレクション設定を追加--vector-search/--no-vector-search: ベクトル検索 scaffold の有効/無効--vector-collection <path>: 検索対象コレクション--source-text-field <name>: 埋め込み更新対象のテキストフィールド--vector-field <name>: ベクトル保存フィールド--search-fields <csv>: 検索結果として返すフィールド--search-function <name>: 生成するonRequest関数名--top-k <number>: 検索時のデフォルト上位件数
生成される主な関数(コレクションごと)
onDocumentWritten_<functionName>.*sourceTextFieldの内容をembedTextに渡し、vectorFieldへ保存
vectorSearchOnRequest_<searchFunctionName>.*- HTTP リクエストの
vector(またはquery)でコサイン類似度検索
- HTTP リクエストの
vectorSearchEmbedding_<functionName>.*embedTextを実装する差し替えポイント(デフォルトはnullを返す)
npm モジュールとして検索クライアントを使う
import { createVectorSearchClient } from "firebase-dataconnect-bootstrap/search-client";
const client = createVectorSearchClient({
endpoint: "https://<region>-<project>.cloudfunctions.net/searchByVector"
});
const result = await client.search({
query: "議事録の要点",
topK: 5
});query を使う場合は、Functions 側 vectorSearchEmbedding.* の embedText 実装が必要です。vector を直接渡す場合は embedText が未実装でも検索できます。
