| | import { z } from "zod"; |
| | import { |
| | embeddingEndpointTei, |
| | embeddingEndpointTeiParametersSchema, |
| | } from "./tei/embeddingEndpoints"; |
| | import { |
| | embeddingEndpointTransformersJS, |
| | embeddingEndpointTransformersJSParametersSchema, |
| | } from "./transformersjs/embeddingEndpoints"; |
| | import { |
| | embeddingEndpointOpenAI, |
| | embeddingEndpointOpenAIParametersSchema, |
| | } from "./openai/embeddingEndpoints"; |
| | import { embeddingEndpointHfApi, embeddingEndpointHfApiSchema } from "./hfApi/embeddingHfApi"; |
| |
|
| | |
| | interface EmbeddingEndpointParameters { |
| | inputs: string[]; |
| | } |
| |
|
| | export type Embedding = number[]; |
| |
|
| | |
| | export type EmbeddingEndpoint = (params: EmbeddingEndpointParameters) => Promise<Embedding[]>; |
| |
|
| | export const embeddingEndpointSchema = z.discriminatedUnion("type", [ |
| | embeddingEndpointTeiParametersSchema, |
| | embeddingEndpointTransformersJSParametersSchema, |
| | embeddingEndpointOpenAIParametersSchema, |
| | embeddingEndpointHfApiSchema, |
| | ]); |
| |
|
| | type EmbeddingEndpointTypeOptions = z.infer<typeof embeddingEndpointSchema>["type"]; |
| |
|
| | |
| | export type EmbeddingEndpointGenerator<T extends EmbeddingEndpointTypeOptions> = ( |
| | inputs: Extract<z.infer<typeof embeddingEndpointSchema>, { type: T }> |
| | ) => EmbeddingEndpoint | Promise<EmbeddingEndpoint>; |
| |
|
| | |
| | export const embeddingEndpoints: { |
| | [Key in EmbeddingEndpointTypeOptions]: EmbeddingEndpointGenerator<Key>; |
| | } = { |
| | tei: embeddingEndpointTei, |
| | transformersjs: embeddingEndpointTransformersJS, |
| | openai: embeddingEndpointOpenAI, |
| | hfapi: embeddingEndpointHfApi, |
| | }; |
| |
|
| | export default embeddingEndpoints; |
| |
|