Реализация семантического поиска в конкретных документах и использование метода и метаданных Vectorstore.asRetriever() JavaScript LangChain
Я пытаюсь понять, какvectorstore.asRetriever()
метод действует.
Это упражнение направлено на управление семантическим поиском с использованием фильтра метаданных, ориентированного на конкретные документы. Могут быть случаи, когда мне нужно получить документ на основе метаданных, помеченных какcode
, который уникален и функционирует аналогичноID
. В таких случаях семантический поиск необходимо будет выполнить только по этому конкретному документу из 100 тысяч документов, хранящихся в базе данных Pinecone.
Как я могу реализовать это? Есть ли альтернативный подход? Я пытался найти решения в документации LangChain JS, но пока не нашел.
Мой код:
export const makeChain = (vectorstore: PineconeStore) => {
const model = new OpenAI({
temperature: 0,
modelName: 'gpt-3.5',
});
const metadataFilter = { location: 'Paris' };
const chain = ConversationalRetrievalQAChain.fromLLM(
model,
vectorstore.asRetriever(10, metadataFilter),
{
qaTemplate: QA_PROMPT,
questionGeneratorTemplate: CONDENSE_PROMPT,
returnSourceDocuments: true,
},
);
return chain;
};
Документация
asRetriever()
asRetriever(k?: number, filter?: object): VectorStoreRetriever<VectorStore>
Parameters:
Parameter Type
k? number
filter? object
Returns
VectorStoreRetriever<VectorStore>
asRetriever(
k?: number,
filter?: this["FilterType"]
): VectorStoreRetriever<this> {
return new VectorStoreRetriever({ vectorStore: this, k, filter });
}
}