feat: Weaviate Vector Store Node for Langchain (#16856)

This commit is contained in:
Duda Nogueira
2025-07-03 03:35:47 -03:00
committed by GitHub
parent 2d2818cdf8
commit 4813c011ec
8 changed files with 607 additions and 0 deletions

View File

@@ -0,0 +1,143 @@
import type { ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
export class WeaviateApi implements ICredentialType {
name = 'weaviateApi';
displayName = 'Weaviate Credentials';
documentationUrl = 'https://docs.n8n.io/integrations/builtin/credentials/weaviate/';
properties: INodeProperties[] = [
{
displayName: 'Connection Type',
name: 'connection_type',
type: 'options',
options: [
{
name: 'Weaviate Cloud',
value: 'weaviate_cloud',
},
{
name: 'Custom Connection',
value: 'custom_connection',
},
],
default: 'weaviate_cloud',
description:
'Choose whether to connect to a Weaviate Cloud instance or a custom Weaviate instance.',
},
{
displayName: 'Weaviate Cloud Endpoint',
name: 'weaviate_cloud_endpoint',
description: 'The Endpoint of a Weaviate Cloud instance.',
placeholder: 'https://your-cluster.weaviate.cloud',
type: 'string',
required: true,
default: '',
displayOptions: {
show: {
connection_type: ['weaviate_cloud'],
},
},
},
{
displayName: 'Weaviate Api Key',
name: 'weaviate_api_key',
description: 'The API key for the Weaviate instance.',
type: 'string',
typeOptions: { password: true },
default: '',
},
{
displayName: 'Custom Connection HTTP Host',
name: 'custom_connection_http_host',
description: 'The host of your Weaviate instance.',
type: 'string',
required: true,
default: 'weaviate',
displayOptions: {
show: {
connection_type: ['custom_connection'],
},
},
},
{
displayName: 'Custom Connection HTTP Port',
name: 'custom_connection_http_port',
description: 'The port of your Weaviate instance.',
type: 'number',
required: true,
default: 8080,
displayOptions: {
show: {
connection_type: ['custom_connection'],
},
},
},
{
displayName: 'Custom Connection HTTP Secure',
name: 'custom_connection_http_secure',
description: 'Whether to use a secure connection for HTTP.',
type: 'boolean',
required: true,
default: false,
displayOptions: {
show: {
connection_type: ['custom_connection'],
},
},
},
{
displayName: 'Custom Connection gRPC Host',
name: 'custom_connection_grpc_host',
description: 'The gRPC host of your Weaviate instance.',
type: 'string',
required: true,
default: 'weaviate',
displayOptions: {
show: {
connection_type: ['custom_connection'],
},
},
},
{
displayName: 'Custom Connection gRPC Port',
name: 'custom_connection_grpc_port',
description: 'The gRPC port of your Weaviate instance.',
type: 'number',
required: true,
default: 50051,
displayOptions: {
show: {
connection_type: ['custom_connection'],
},
},
},
{
displayName: 'Custom Connection gRPC Secure',
name: 'custom_connection_grpc_secure',
description: 'Whether to use a secure connection for gRPC.',
type: 'boolean',
required: true,
default: false,
displayOptions: {
show: {
connection_type: ['custom_connection'],
},
},
},
];
test: ICredentialTestRequest = {
request: {
baseURL:
'={{$credentials.weaviate_cloud_endpoint?$credentials.weaviate_cloud_endpoint.startsWith("http://") || $credentials.weaviate_cloud_endpoint.startsWith("https://")?$credentials.weaviate_cloud_endpoint:"https://" + $credentials.weaviate_cloud_endpoint:($credentials.custom_connection_http_secure ? "https" : "http") + "://" + $credentials.custom_connection_http_host + ":" + $credentials.custom_connection_http_port }}',
url: '/v1/nodes',
disableFollowRedirect: false,
headers: {
Authorization:
'={{$if($credentials.weaviate_api_key, "Bearer " + $credentials.weaviate_api_key, undefined)}}',
},
},
};
}