Type error in retrievers [JS]
cabljac opened this issue · comments
Describe the bug
The types should complain in the options for the pinecone retriever. I get a runtime error:
Using DevFlowStateStore. Root: /var/folders/y9/0j765brj643gjz3ggwkpn2740000gn/T/.genkit/47a1bd8a68530c0ff153aeb3c40b4c32/flows
Error[/dev-run-action-wrapper/filmRetrieverFlow/filmRetrieverFlow, TypeError] {
path: '/dev-run-action-wrapper/filmRetrieverFlow/filmRetrieverFlow',
name: 'TypeError',
message: "Cannot read properties of undefined (reading 'namespace')",
stack: "TypeError: Cannot read properties of undefined (reading 'namespace')\n" +
' at /Users/jacob/invertase/genkit/genkit-samples/naive-rag/pinecone/node_modules/genkitx-pinecone/lib/index.js:156:37\n' +
' at Generator.next (<anonymous>)\n' +
' at fulfilled (/Users/jacob/invertase/genkit/genkit-samples/naive-rag/pinecone/node_modules/genkitx-pinecone/lib/index.js:47:24)\n' +
' at process.processTicksAndRejections (node:internal/process/task_queues:95:5)',
source: 'ts',
sourceVersion: '0.5.0'
}
To Reproduce
The following code gives no type errors, but it should. The retriever won't work unless you specify k
which is the number of results you wish to return.
import { config } from "dotenv";
config();
import { index, retrieve } from "@genkit-ai/ai/retriever";
import { configureGenkit } from "@genkit-ai/core";
import { defineFlow } from "@genkit-ai/flow";
import { textEmbeddingGecko, vertexAI } from "@genkit-ai/vertexai";
import { z } from "zod";
import { pineconeRetrieverRef } from "genkitx-pinecone";
import { pineconeIndexerRef } from "genkitx-pinecone";
import { pinecone } from "genkitx-pinecone";
if (!process.env.PINECONE_API_KEY) {
throw new Error("PINECONE_API_KEY is required");
}
const fakeData = [
{
content: [
{
text: "A film about dodging bullets",
},
],
metadata: {
name: "The Matrix",
},
},
{
content: [
{
text: "A film about a space opera",
},
],
metadata: {
name: "Star Wars",
},
},
{
content: [
{
text: "A film about a young wizard",
},
],
metadata: {
name: "Harry Potter",
},
},
];
export default configureGenkit({
plugins: [
vertexAI(),
pinecone([
{
indexId: "films",
embedder: textEmbeddingGecko,
clientParams: {
apiKey: process.env.PINECONE_API_KEY,
},
},
]),
],
});
export const filmRetriever = pineconeRetrieverRef({
indexId: "films",
});
export const filmIndexer = pineconeIndexerRef({
indexId: "films",
});
export const filmIndexerFlow = defineFlow(
{
name: "filmIndexerFlow",
},
async () => {
const documents = fakeData;
await index({ indexer: filmIndexer, documents });
}
);
export const filmRetrieverFlow = defineFlow(
{
name: "filmRetrieverFlow",
inputSchema: z.object({ query: z.string() }),
// outputSchema: z.array(z.string()),
},
async ({ query, k }) => {
const docs = await retrieve({ retriever: filmRetriever, query });
console.log(docs);
// return docs.map((d) => d.metadata!.name!);
}
);
Expected behavior
A type error about not having k
in the options of retrieve.
Runtime (please complete the following information):
- OS: MacOS
- Version [e.g. 0.5.2]
** Node version
- run
node --version
at paste here
20.11.1
Additional context
genkit is on 0.5.2
I had some other issues with retrievers, will open new issues for them at a later point
same here