我正在 Firebase 中使用 Genkit 的检索器,旨在在应用嵌入匹配之前过滤集合。具体来说,我想在对嵌入执行最近邻搜索之前过滤
uid
等于特定值(例如 123
)的文档。
过滤 Firestore 集合的典型方法如下:
where('uid', '==', 'my uid')
这是我当前基于 Genkit 文档的检索器设置。我可能遗漏了一些东西,或者可能不支持预过滤?在执行相似性搜索之前,能够过滤到特定于用户的文档似乎至关重要。
const firestoreRetriever = defineFirestoreRetriever({
name: 'firestore-articles',
firestore: getFirestore(),
collection: 'articles',
contentField: 'fullText',
vectorField: 'embeddings',
embedder: textEmbeddingGecko,
distanceMeasure: 'COSINE',
metadataFields: ['path']
});
此检索器的调用方式如下:
const docs = await retrieve({
retriever: firestoreRetriever,
query,
options: {
k: 1,
limit: 10,
},
});
Genkit 是否提供了一种在
uid
函数内对特定字段(例如,defineFirestoreRetriever
)应用预过滤器的方法,或者这是否需要解决方法?任何指导或替代方法将不胜感激。
你尝试过吗:
const docs = await retrieve({
retriever: firestoreRetriever,
query,
options: {
k: 1,
limit: 10,
where: {
uuid: '123',
},
},
});
Firestore 矢量存储的可用检索器选项中提到了 where 选项:https://firebase.google.com/docs/genkit/plugins/firebase#retrievers