4 Chroma-嵌入(Embeddings)

嵌入向量是用于表示任何类型数据的人工智能原生方式,使其成为与各种人工智能驱动的工具和算法完美结合的选择。它们可以表示文本、图像,以及不久之后的音频和视频。有许多选项可用于创建嵌入向量,可以在本地使用已安装的库进行创建,也可以通过调用 API 来创建。

Chroma提供了对流行嵌入提供者的轻量级封装,方便将它们应用到您的应用程序中。您可以在创建Chroma集合时设置一个嵌入函数,该函数将自动被使用;或者您也可以直接调用它们。

PythonJS
OpenAI
Cohere
Google PaLM
Hugging Face
Instructor

我们欢迎开发者提交贡献代码,以将新的嵌入函数添加到社区中。

默认:all-MiniLM-L6-v2

默认情况下,Chroma使用Sentence Transformers中的all-MiniLM-L6-v2模型来创建嵌入向量。这个嵌入模型可以创建用于各种任务的句子和文档嵌入向量。该嵌入函数在您的计算机上本地运行,并可能需要下载模型文件(这将自动进行)。

from chromadb.utils import embedding_functions
default_ef = embedding_functions.DefaultEmbeddingFunction()

注意:
嵌入函数可以与集合关联,这意味着在调用add、update、upsert或query时会使用它们。您也可以直接使用它们,这在调试时非常方便。

val = default_ef(["foo"])

-> [[0.05035809800028801, 0.0626462921500206, -0.061827320605516434…]]

Sentence Transformers

Chroma还可以使用任何Sentence Transformers模型来创建嵌入向量。

sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(model_name="all-MiniLM-L6-v2")

您可以传入一个可选的model_name参数,以选择要使用的Sentence Transformers模型。默认情况下,Chroma使用all-MiniLM-L6-v2模型。您可以在这里查看所有可用模型的列表。

自定义 Embedding Functions

python:

您可以创建自己的嵌入函数并在Chroma中使用,只需实现EmbeddingFunction协议即可。

from chromadb import Documents, EmbeddingFunction, Embeddings

class MyEmbeddingFunction(EmbeddingFunction):
    def __call__(self, texts: Documents) -> Embeddings:
        # embed the documents somehow
        return embeddings

我们欢迎贡献!如果您创建了一个您认为对他人有用的嵌入函数,请考虑提交拉取请求,将其添加到Chroma的embedding_functions模块中。

JavaScript:

您可以创建自己的嵌入函数以与Chroma一起使用,只需实现EmbeddingFunction协议。在一个类中,.generate方法严格来说是您所需要的全部。

class MyEmbeddingFunction {
  private api_key: string;

  constructor(api_key: string) {
    this.api_key = api_key;
  }

  public async generate(texts: string[]): Promise<number[][]> {
    // do things to turn texts into embeddings with an api_key perhaps
    return embeddings;
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮皮姑娘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值