Chat UI 文档

文本嵌入模型

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

文本嵌入模型

默认情况下(为了向后兼容),当未定义 TEXT_EMBEDDING_MODELS 环境变量时,transformers.js 嵌入模型将用于嵌入任务,特别是 Xenova/gte-small 模型。

您可以通过在 .env.local 文件中设置 TEXT_EMBEDDING_MODELS 来自定义嵌入模型,其中必填字段为 namechunkCharLengthendpoints

支持的文本嵌入后端有:transformers.jsTEIOpenAItransformers.js 模型作为 chat-ui 的一部分在本地运行,而 TEI 模型在不同环境中运行并通过 API 端点访问。openai 模型通过 OpenAI API 访问。

当在 .env.local 文件中提供了多个嵌入模型时,默认使用第一个,其他的仅在将 embeddingModel 配置为该模型名称的 LLM 上使用。

Transformers.js

Transformers.js 后端使用本地 CPU 进行嵌入,这可能相当慢。如果可能,并且您经常使用网页搜索,请考虑改用 TEI 或 OpenAI 嵌入,因为性能会显著提高。

TEXT_EMBEDDING_MODELS = `[
  {
    "name": "Xenova/gte-small",
    "displayName": "Xenova/gte-small",
    "description": "locally running embedding",
    "chunkCharLength": 512,
    "endpoints": [
      { "type": "transformersjs" }
    ]
  }
]`

文本嵌入推理 (TEI)

文本嵌入推理 (Text Embeddings Inference, TEI) 是一个全面的工具包,专为高效部署和提供开源文本嵌入模型而设计。它能够为最流行的模型(包括 FlagEmbedding、Ember、GTE 和 E5)实现高性能提取。

在撰写本文时(2024 年 5 月),一些推荐的模型是 Snowflake/snowflake-arctic-embed-mBAAI/bge-large-en-v1.5。您可以通过 Docker 在本地运行支持 GPU 的 TEI

docker run --gpus all -p 8080:80 -v tei-data:/data --name tei ghcr.io/huggingface/text-embeddings-inference:1.2 --model-id YOUR/HF_MODEL

然后,您可以使用以下配置将其连接到您的 Chat UI 实例。

TEXT_EMBEDDING_MODELS=`[
  {
    "name": "YOUR/HF_MODEL",
    "displayName": "YOUR/HF_MODEL",
    "preQuery": "Check the model documentation for the preQuery. Not all models have one",
    "prePassage": "Check the model documentation for the prePassage. Not all models have one",
    "chunkCharLength": 512,
    "endpoints": [{
      "type": "tei",
      "url": "http://127.0.0.1:8080/"
    }]
  }
]`

Snowflake/snowflake-arctic-embed-mBAAI/bge-large-en-v1.5 的示例

TEXT_EMBEDDING_MODELS=`[
  {
    "name": "Snowflake/snowflake-arctic-embed-m",
    "displayName": "Snowflake/snowflake-arctic-embed-m",
    "preQuery": "Represent this sentence for searching relevant passages: ",
    "chunkCharLength": 512,
    "endpoints": [{
      "type": "tei",
      "url": "http://127.0.0.1:8080/"
    }]
  },{
    "name": "BAAI/bge-large-en-v1.5",
    "displayName": "BAAI/bge-large-en-v1.5",
    "chunkCharLength": 512,
    "endpoints": [{
      "type": "tei",
      "url": "http://127.0.0.1:8080/"
    }]
  }
]`

OpenAI

也可以托管您自己的与 OpenAI API 兼容的嵌入模型。Infinity 就是一个例子。您可以使用 Docker 在本地运行它

docker run -it --gpus all -v infinity-data:/app/.cache -p 7997:7997 michaelf34/infinity:latest v2 --model-id nomic-ai/nomic-embed-text-v1 --port 7997

然后,您可以使用以下配置将其连接到您的 Chat UI 实例。

TEXT_EMBEDDING_MODELS=`[
  {
    "name": "nomic-ai/nomic-embed-text-v1",
    "displayName": "nomic-ai/nomic-embed-text-v1",
    "chunkCharLength": 512,
    "model": {
      "name": "nomic-ai/nomic-embed-text-v1"
    },
    "endpoints": [
      {
        "type": "openai",
        "url": "https://127.0.0.1:7997/embeddings"
      }
    ]
  }
]`
< > 在 GitHub 上更新