Genkit Retriever:在 Firestore 中运行 Genkit Retriever 之前过滤收集?

问题描述 投票:0回答:1

我正在 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
)应用预过滤器的方法,或者这是否需要解决方法?任何指导或替代方法将不胜感激。

google-cloud-firestore firebase-genkit genkit
1个回答
0
投票

你尝试过吗:

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

© www.soinside.com 2019 - 2024. All rights reserved.