Skip to content

Commit

Permalink
[Feature] added Jina AI Embedding support (#3355)
Browse files Browse the repository at this point in the history
* added Jina AI Embedding support

* Update JinaAIEmbedding.ts

Change model name to string type

* removed jina embeddings

* lint fix

---------

Co-authored-by: Henry Heng <henryheng@flowiseai.com>
  • Loading branch information
definitelynotchirag and HenryHengZJ authored Oct 17, 2024
1 parent 235fcfe commit 1d193b4
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 0 deletions.
25 changes: 25 additions & 0 deletions packages/components/credentials/JinaApi.credential.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { INodeParams, INodeCredential } from '../src/Interface'

class JinaAICredential implements INodeCredential {
label: string
name: string
version: number
description: string
inputs: INodeParams[]

constructor() {
this.label = 'JinaAI API'
this.name = 'jinaAIApi'
this.version = 1.0
this.description = 'You can get your API key from official <a target="_blank" href="https://jina.ai/">console</a> here.'
this.inputs = [
{
label: 'JinaAI API Key',
name: 'jinaAIAPIKey',
type: 'password'
}
]
}
}

module.exports = { credClass: JinaAICredential }
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import { ICommonObject, INode, INodeData, INodeParams } from '../../../src/Interface'
import { getBaseClasses, getCredentialData, getCredentialParam } from '../../../src/utils'
import { JinaEmbeddings, JinaEmbeddingsParams } from '@langchain/community/embeddings/jina'

class JinaAIEmbedding_Embeddings implements INode {
label: string
name: string
version: number
type: string
icon: string
category: string
description: string
baseClasses: string[]
credential: INodeParams
inputs: INodeParams[]

constructor() {
this.label = 'Jina Embeddings'
this.name = 'jinaEmbeddings'
this.version = 1.0
this.type = 'JinaEmbeddings'
this.icon = 'JinaAIEmbedding.svg'
this.category = 'Embeddings'
this.description = 'JinaAI API to generate embeddings for a given text'
this.baseClasses = [this.type, ...getBaseClasses(JinaEmbeddings)]
this.credential = {
label: 'Connect Credential',
name: 'credential',
type: 'credential',
credentialNames: ['jinaAIApi']
}
this.inputs = [
{
label: 'Model Name',
name: 'modelName',
type: 'string',
default: 'jina-embeddings-v2-base-en',
description: 'Refer to <a href="https://jina.ai/embeddings/" target="_blank">JinaAI documentation</a> for available models'
}
]
}

async init(nodeData: INodeData, _: string, options: ICommonObject): Promise<any> {
const modelName = nodeData.inputs?.modelName as string
const credentialData = await getCredentialData(nodeData.credential ?? '', options)
const apiKey = getCredentialParam('jinaAIAPIKey', credentialData, nodeData)

const obj: JinaEmbeddingsParams = {
apiKey: apiKey,
model: modelName
}

const model = new JinaEmbeddings(obj)
return model
}
}

module.exports = { nodeClass: JinaAIEmbedding_Embeddings }

0 comments on commit 1d193b4

Please sign in to comment.