[**@lancedb/lancedb**](../../../README.md) • **Docs** *** [@lancedb/lancedb](../../../globals.md) / [embedding](../README.md) / EmbeddingFunction # Class: `abstract` EmbeddingFunction<T, M> An embedding function that automatically creates vector representation for a given column. ## Extended by - [`OpenAIEmbeddingFunction`](OpenAIEmbeddingFunction.md) ## Type Parameters • **T** = `any` • **M** *extends* `FunctionOptions` = `FunctionOptions` ## Constructors ### new EmbeddingFunction() > **new EmbeddingFunction**<`T`, `M`>(): [`EmbeddingFunction`](EmbeddingFunction.md)<`T`, `M`> #### Returns [`EmbeddingFunction`](EmbeddingFunction.md)<`T`, `M`> ## Methods ### computeQueryEmbeddings() > **computeQueryEmbeddings**(`data`): `Promise`<`number`[] \| `Float32Array` \| `Float64Array`> Compute the embeddings for a single query #### Parameters • **data**: `T` #### Returns `Promise`<`number`[] \| `Float32Array` \| `Float64Array`> *** ### computeSourceEmbeddings() > `abstract` **computeSourceEmbeddings**(`data`): `Promise`<`number`[][] \| `Float32Array`[] \| `Float64Array`[]> Creates a vector representation for the given values. #### Parameters • **data**: `T`[] #### Returns `Promise`<`number`[][] \| `Float32Array`[] \| `Float64Array`[]> *** ### embeddingDataType() > `abstract` **embeddingDataType**(): `Float`<`Floats`> The datatype of the embeddings #### Returns `Float`<`Floats`> *** ### ndims() > **ndims**(): `undefined` \| `number` The number of dimensions of the embeddings #### Returns `undefined` \| `number` *** ### sourceField() > **sourceField**(`optionsOrDatatype`): [`DataType`<`Type`, `any`>, `Map`<`string`, [`EmbeddingFunction`](EmbeddingFunction.md)<`any`, `FunctionOptions`>>] sourceField is used in combination with `LanceSchema` to provide a declarative data model #### Parameters • **optionsOrDatatype**: `DataType`<`Type`, `any`> \| `Partial`<`FieldOptions`<`DataType`<`Type`, `any`>>> The options for the field or the datatype #### Returns [`DataType`<`Type`, `any`>, `Map`<`string`, [`EmbeddingFunction`](EmbeddingFunction.md)<`any`, `FunctionOptions`>>] #### See lancedb.LanceSchema *** ### toJSON() > `abstract` **toJSON**(): `Partial`<`M`> Convert the embedding function to a JSON object It is used to serialize the embedding function to the schema It's important that any object returned by this method contains all the necessary information to recreate the embedding function It should return the same object that was passed to the constructor If it does not, the embedding function will not be able to be recreated, or could be recreated incorrectly #### Returns `Partial`<`M`> #### Example ```ts class MyEmbeddingFunction extends EmbeddingFunction { constructor(options: {model: string, timeout: number}) { super(); this.model = options.model; this.timeout = options.timeout; } toJSON() { return { model: this.model, timeout: this.timeout, }; } ``` *** ### vectorField() > **vectorField**(`optionsOrDatatype`?): [`DataType`<`Type`, `any`>, `Map`<`string`, [`EmbeddingFunction`](EmbeddingFunction.md)<`any`, `FunctionOptions`>>] vectorField is used in combination with `LanceSchema` to provide a declarative data model #### Parameters • **optionsOrDatatype?**: `DataType`<`Type`, `any`> \| `Partial`<`FieldOptions`<`DataType`<`Type`, `any`>>> #### Returns [`DataType`<`Type`, `any`>, `Map`<`string`, [`EmbeddingFunction`](EmbeddingFunction.md)<`any`, `FunctionOptions`>>] #### See lancedb.LanceSchema