n8n-nodes-databricks
Version:
Databricks node for n8n
98 lines • 4.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.VectorStoreDatabricks = void 0;
const createVectorStoreNode_1 = require("../shared/createVectorStoreNode/createVectorStoreNode");
const DatabricksVectorStoreLangChain_1 = require("../../../utils/DatabricksVectorStoreLangChain");
class VectorStoreDatabricks extends (0, createVectorStoreNode_1.createVectorStoreNode)({
meta: {
displayName: 'Databricks Vector Store',
name: 'databricksVectorStore',
description: 'Operations for Databricks Vector Store',
docsUrl: 'https://docs.databricks.com/aws/en/generative-ai/vector-search',
icon: 'file:databricks.svg',
operationModes: ['load', 'insert', 'retrieve', 'retrieve-as-tool'],
credentials: [
{
name: 'databricks',
required: true,
},
],
},
sharedFields: [
{
displayName: 'Index Name',
name: 'indexName',
type: 'string',
default: '',
required: true,
description: 'Name of the vector search index in Databricks',
},
{
displayName: 'Text Column',
name: 'textColumn',
type: 'string',
default: 'text',
required: true,
description: 'Name of the column containing the document text',
},
{
displayName: 'Metadata Columns',
name: 'metadataColumns',
type: 'string',
default: '',
description: 'Comma-separated list of columns to include as metadata',
},
{
displayName: 'Score Threshold',
name: 'scoreThreshold',
type: 'number',
default: 0.8,
description: 'Minimum similarity score threshold',
},
],
retrieveFields: [],
async getVectorStoreClient(context, filter, embeddings, itemIndex) {
const credentials = await context.getCredentials('databricks');
const indexName = context.getNodeParameter('indexName', itemIndex);
const textColumn = context.getNodeParameter('textColumn', itemIndex);
const metadataColumns = context.getNodeParameter('metadataColumns', itemIndex);
const scoreThreshold = context.getNodeParameter('scoreThreshold', itemIndex, 0.8);
if (!indexName || !textColumn) {
throw new Error('Missing required input properties: indexName or textColumn');
}
const metadataColumnsList = metadataColumns
? metadataColumns.split(',').map((s) => s.trim())
: [];
return await DatabricksVectorStoreLangChain_1.DatabricksVectorStoreLangChain.fromExistingIndex(embeddings, {
workspaceUrl: credentials.host,
token: credentials.token,
indexName,
textColumn,
metadataColumns: metadataColumnsList,
scoreThreshold,
});
},
async populateVectorStore(context, embeddings, documents, itemIndex) {
const credentials = await context.getCredentials('databricks');
const inputData = context.getInputData()[itemIndex].json;
if (!(inputData === null || inputData === void 0 ? void 0 : inputData.indexName) || !(inputData === null || inputData === void 0 ? void 0 : inputData.textColumn)) {
throw new Error('Missing required input properties: indexName or textColumn');
}
const metadataColumnsList = inputData.metadataColumns ?
inputData.metadataColumns.split(',').map((s) => s.trim()) :
[];
await DatabricksVectorStoreLangChain_1.DatabricksVectorStoreLangChain.fromDocuments(documents, embeddings, {
workspaceUrl: credentials.host,
token: credentials.token,
indexName: inputData.indexName,
textColumn: inputData.textColumn,
metadataColumns: metadataColumnsList,
});
},
async releaseVectorStoreClient() {
},
}) {
}
exports.VectorStoreDatabricks = VectorStoreDatabricks;
exports.default = VectorStoreDatabricks;
//# sourceMappingURL=VectorStoreDatabricks.node.js.map