Replies: 1 comment 2 replies
-
To retrieve documents from a vector store using import { CohereEmbeddings } from "@langchain/cohere";
import { PromptTemplate } from "@langchain/core/prompts";
import { StringOutputParser } from "@langchain/core/output_parsers";
import {
RunnablePassthrough,
RunnableSequence,
} from "@langchain/core/runnables";
import { Document } from "@langchain/core/documents";
import { ChatAnthropic } from "@langchain/anthropic";
import { MemoryVectorStore } from "langchain/vectorstores/memory";
const model = new ChatAnthropic();
const vectorstore = await MemoryVectorStore.fromDocuments(
[{ pageContent: "mitochondria is the powerhouse of the cell", metadata: {} }],
new CohereEmbeddings()
);
const retriever = vectorstore.asRetriever();
const template = `Answer the question based only on the following context:
{context}
Question: {question}`;
const prompt = PromptTemplate.fromTemplate(template);
const formatDocs = (docs: Document[]) => docs.map((doc) => doc.pageContent);
const retrievalChain = RunnableSequence.from([
{ context: retriever.pipe(formatDocs), question: new RunnablePassthrough() },
prompt,
model,
new StringOutputParser(),
]);
const result = await retrievalChain.invoke(
"what is the powerhouse of the cell?"
);
console.log(result);
/*
Based on the given context, the powerhouse of the cell is mitochondria.
*/ This example demonstrates how to set up a retrieval chain using Additionally, you can test the retriever with callbacks to ensure it works as expected: import { Document } from "@langchain/core/documents";
import { FakeEmbeddings } from "@langchain/core/utils/testing";
import { MemoryVectorStore } from "langchain/vectorstores/memory";
test("Test Memory Retriever with Callback", async () => {
const pageContent = "Hello world";
const embeddings = new FakeEmbeddings();
const vectorStore = new MemoryVectorStore(embeddings);
expect(vectorStore).toBeDefined();
await vectorStore.addDocuments([
{ pageContent, metadata: { a: 1 } },
{ pageContent, metadata: { a: 1 } },
{ pageContent, metadata: { a: 1 } },
{ pageContent, metadata: { a: 1 } },
]);
const queryStr = "testing testing";
let startRun = 0;
let endRun = 0;
let startPromiseResolve: (v?: unknown) => void;
const startPromise = new Promise((resolve) => {
startPromiseResolve = resolve;
});
let endPromiseResolve: (v?: unknown) => void;
const endPromise = new Promise((resolve) => {
endPromiseResolve = resolve;
});
const retriever = vectorStore.asRetriever({
k: 1,
vectorStore,
callbacks: [
{
handleRetrieverStart: async (_, query) => {
expect(query).toBe(queryStr);
startRun += 1;
startPromiseResolve();
},
handleRetrieverEnd: async (documents) => {
expect(documents[0].pageContent).toBe(pageContent);
endRun += 1;
endPromiseResolve();
},
},
],
});
const results = await retriever.getRelevantDocuments(queryStr);
expect(results).toEqual([new Document({ metadata: { a: 1 }, pageContent })]);
await startPromise;
await endPromise;
expect(startRun).toBe(1);
expect(endRun).toBe(1);
}); This code demonstrates how to test the retriever with callbacks to ensure it retrieves documents correctly [2]. For more advanced use cases, such as retrieving documents from both a vector store and a document store, you can use the import { MultiVectorRetriever } from "langchain/retrievers/multi_vector";
import { FaissStore } from "langchain/vectorstores/faiss";
import { InMemoryStore } from "langchain/stores/in_memory";
import { Document } from "@langchain/core/documents";
const retriever = new MultiVectorRetriever({
vectorstore: new FaissStore(),
byteStore: new InMemoryStore<Uint8Array>(),
idKey: "doc_id",
childK: 20,
parentK: 5,
});
const retrieverResult = await retriever.getRelevantDocuments("justice breyer");
console.log(retrieverResult[0].pageContent.length); This example shows how to use the
|
Beta Was this translation helpful? Give feedback.
-
Checked other resources
Commit to Help
Example Code
Description
I'm trying to retrieve documents from a vector store using RunnableMap. The example code is giving me
TypeError: Cannot read properties of undefined (reading 'length')
when I invoke the runnable. How do I retrieve documents from a vector store using RunnableMap?System Info
windows
Node v20.11.1
Beta Was this translation helpful? Give feedback.
All reactions