UNPKG

@n8n/n8n-nodes-langchain

Version:

![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

86 lines 3.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RetrieverVectorStore = void 0; const vectorstores_1 = require("@langchain/core/vectorstores"); const contextual_compression_1 = require("@langchain/classic/retrievers/contextual_compression"); const n8n_workflow_1 = require("n8n-workflow"); const ai_utilities_1 = require("@n8n/ai-utilities"); class RetrieverVectorStore { constructor() { this.description = { displayName: 'Vector Store Retriever', name: 'retrieverVectorStore', icon: 'node:vector-store-retriever', iconColor: 'black', group: ['transform'], version: 1, description: 'Use a Vector Store as Retriever', defaults: { name: 'Vector Store Retriever', }, codex: { categories: ['AI'], subcategories: { AI: ['Retrievers'], }, resources: { primaryDocumentation: [ { url: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.retrievervectorstore/', }, ], }, }, inputs: [ { displayName: 'Vector Store', maxConnections: 1, type: n8n_workflow_1.NodeConnectionTypes.AiVectorStore, required: true, }, ], outputs: [n8n_workflow_1.NodeConnectionTypes.AiRetriever], outputNames: ['Retriever'], builderHint: { relatedNodes: [ { nodeType: '@n8n/n8n-nodes-langchain.vectorStoreInMemory', relationHint: 'Connect to provide vectors for retrieval in RAG workflows', }, ], inputs: { ai_vectorStore: { required: true }, }, }, properties: [ { displayName: 'Limit', name: 'topK', type: 'number', default: 4, description: 'The maximum number of results to return', }, ], }; } async supplyData(itemIndex) { this.logger.debug('Supplying data for Vector Store Retriever'); const topK = this.getNodeParameter('topK', itemIndex, 4); const vectorStore = (await this.getInputConnectionData(n8n_workflow_1.NodeConnectionTypes.AiVectorStore, itemIndex)); let retriever = null; if (vectorStore instanceof vectorstores_1.VectorStore) { retriever = vectorStore.asRetriever(topK); } else { retriever = new contextual_compression_1.ContextualCompressionRetriever({ baseCompressor: vectorStore.reranker, baseRetriever: vectorStore.vectorStore.asRetriever(topK), }); } return { response: (0, ai_utilities_1.logWrapper)(retriever, this), }; } } exports.RetrieverVectorStore = RetrieverVectorStore; //# sourceMappingURL=RetrieverVectorStore.node.js.map