diff --git a/packages/components/nodes/embeddings/JinaAIEmbedding/JinaAIEmbedding.ts b/packages/components/nodes/embeddings/JinaAIEmbedding/JinaAIEmbedding.ts index 946a2031..bdb138f8 100644 --- a/packages/components/nodes/embeddings/JinaAIEmbedding/JinaAIEmbedding.ts +++ b/packages/components/nodes/embeddings/JinaAIEmbedding/JinaAIEmbedding.ts @@ -2,6 +2,16 @@ import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Inter import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils' import { JinaEmbeddings } from '@langchain/community/embeddings/jina' +class ExtendedJinaEmbeddings extends JinaEmbeddings { + private late_chunking: boolean + + constructor(fields: ConstructorParameters[0] & { late_chunking?: boolean }) { + const { late_chunking = false, ...restFields } = fields + super(restFields) + this.late_chunking = late_chunking + } +} + class JinaAIEmbedding_Embeddings implements INode { label: string name: string @@ -17,7 +27,7 @@ class JinaAIEmbedding_Embeddings implements INode { constructor() { this.label = 'Jina Embeddings' this.name = 'jinaEmbeddings' - this.version = 2.0 + this.version = 3.0 this.type = 'JinaEmbeddings' this.icon = 'JinaAIEmbedding.svg' this.category = 'Embeddings' @@ -34,7 +44,7 @@ class JinaAIEmbedding_Embeddings implements INode { label: 'Model Name', name: 'modelName', type: 'string', - default: 'jina-embeddings-v2-base-en', + default: 'jina-embeddings-v3', description: 'Refer to JinaAI documentation for available models' }, { @@ -44,6 +54,15 @@ class JinaAIEmbedding_Embeddings implements INode { default: 1024, description: 'Refer to JinaAI documentation for available dimensions' + }, + { + label: 'Allow Late Chunking', + name: 'allowLateChunking', + type: 'boolean', + description: + 'Refer to JinaAI documentation guidance on late chunking', + default: false, + optional: true } ] } @@ -51,13 +70,15 @@ class JinaAIEmbedding_Embeddings implements INode { async init(nodeData: INodeData, _: string, options: ICommonObject): Promise { const modelName = nodeData.inputs?.modelName as string const modelDimensions = nodeData.inputs?.modelDimensions as number + const allowLateChunking = nodeData.inputs?.modelDimensions as boolean const credentialData = await getCredentialData(nodeData.credential ?? '', options) const apiKey = getCredentialParam('jinaAIAPIKey', credentialData, nodeData) - const model = new JinaEmbeddings({ + const model = new ExtendedJinaEmbeddings({ apiKey: apiKey, model: modelName, - dimensions: modelDimensions + dimensions: modelDimensions, + late_chunking: allowLateChunking }) return model