Chat UI 文件
文字嵌入模型
並獲得增強的文件體驗
開始使用
文字嵌入模型
預設情況下(為了向後相容),當未定義 TEXT_EMBEDDING_MODELS
環境變數時,transformers.js 嵌入模型將用於嵌入任務,特別是 Xenova/gte-small 模型。
您可以透過在 .env.local
檔案中設定 TEXT_EMBEDDING_MODELS
來自定義嵌入模型,其中必填欄位為 name
、chunkCharLength
和 endpoints
。
支援的文字嵌入後端有:transformers.js
、TEI
和 OpenAI
。transformers.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-m
和 BAAI/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-m
和 BAAI/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"
}
]
}
]`