前言
AnythingLLM 是一個開源項目,旨在簡化將本地文檔和數據源轉化為可檢索、可交互知識庫的過程。它允許用戶利用大語言模型(LLM)的能力,基于自身的私有數據進行智能問答、語義搜索等操作。其技術架構包含以下三方面:
- Embedding 模型:使用 Embedding 模型將文本轉換為向量表示,以便在向量空間中進行相似度計算。常見的 Embedding 模型如 BGE - M3 等,能夠捕捉文本的語義信息,提高檢索的準確性。
- 向量數據庫:用于存儲和管理文本向量,支持高效的向量搜索。AnythingLLM 可以集成多種向量數據庫,如 Chroma、Milvus 等,根據實際需求選擇合適的數據庫來滿足性能和規模的要求。
- 大語言模型(LLM):負責根據檢索到的相關內容生成自然語言回答。用戶可以選擇不同的 LLM,如 OpenAI 的 GPT 系列、國產的通義千問、文心一言等,或者使用開源的 LLM 模型。
客戶在搭建完具備推理訓練基本能力的私有 DeepSeek 服務后,往往需要外掛知識庫以達到應答更專業的目的。外掛知識庫涉及到 Embedding 模型以及向量數據庫這兩大部分。本文檔結合 GPU 物理機提供的 DeepSeek 服務,結合 Anything LLM,介紹如何使用云主機外掛 Embedding 模型以及向量數據庫。
準備
- 創建一臺物理機并搭建DeepSeek服務,參考NVIDIA GPU物理機搭建DeepSeek指南(單機版)。
- 安全組放開Anything LLM云主機的彈性IP+端口8000,參考安全組-物理機-用戶指南-安全 - 天翼云。
部署Anything LLM
-
創建通用云主機
創建步驟請參考創建彈性云主機-彈性云主機-快速入門 - 天翼云,此處以“s8r.large.2”規格,“Ubuntu Server 22.04 64”鏡像為例部署。
-
部署docker軟件
#備份軟件源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #替換軟件源,在編輯器中刪除原內容添加備份源配置 sudo vim /etc/apt/sources.list #更新軟件包索引 sudo apt update #安裝 Docker 依賴 sudo apt install apt-transport-https ca-certificates curl software-properties-common -y #添加 Docker 官方 GPG 密鑰 curl -fsSL //download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg #添加 Docker 軟件源 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] //download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update #安裝 Docker 引擎 sudo apt install docker-ce docker-ce-cli containerd.io -y #啟動并設置 Docker 服務 sudo systemctl start docker sudo systemctl enable docker
說明后續使用docker拉取鏡像時,可將其配置為國內源以提升鏡像拉取速度。
-
部署Anything LLM
docker pull mintplexlabs/anythingllm export STORAGE_LOCATION=$HOME/anythingllm && \ mkdir -p $STORAGE_LOCATION && \ touch "$STORAGE_LOCATION/.env" && \ docker run -u root -d -p 3001:3001 \ #指定宿主機核容器內服務到的端口映射,可自主選擇 --cap-add SYS_ADMIN \ # Docker 命令中的一個選項,用于給容器添加額外的 Linux 內核能力 -v ${STORAGE_LOCATION}:/app/server/storage \ #服務啟動數據宿主機目錄和容器目錄的映射 -v ${STORAGE_LOCATION}/.env:/app/server/.env \ #服務啟動環境變量配置文件,宿主機和容器的映射 -e STORAGE_DIR="/app/server/storage" \ #容器內的環境變量,指定服務數據在容器內存放目錄 mintplexlabs/anythingllm -
登錄Anything LLM
接入GPU物理機提供的DS模型
-
登錄Anything LLM,選擇設置LLM首選項。
-
設置“Local AI Base URL",其中”Local AI Base URL“填充GPU物理機DS地址和端口,然后保存。
Embedding模型
不同的任務需要不同的模型和數據庫支持。如信息檢索任務,需要 embedding 模型能準確捕捉文本語義信息,向量數據庫具備高效的檢索功能;對于推薦系統任務,模型要能挖掘用戶和物品的潛在特征,數據庫要支持快速的相似性計算。
Anything LLM支持多種Embedding模型引擎,包括AnythingLLM Native Embedder (default)、OpenAI、Azure OpenAI、LocalAi (all)、Ollama (all)、LM Studio (all)、Cohere。下面以LocalAi (all)使用BGE - M3模型為例說明,其他請參考對應軟件官網安裝使用。
-
創建GPU云主機并開放安全組規則。
BGE - M3 是一款文本嵌入模型,在部署使用時,云主機配置會受任務類型(如推理、訓練)、數據規模、并發請求數量等因素影響。如果是訓練任務建議使用1張A100,其他任務可根據實際需求創建規格。創建步驟請參考創建配備GPU驅動的GPU云主機(Linux)-GPU云主機-用戶指南-創建GPU云主機 - 天翼云。
安全組放開Anything LLM云主機彈性IP+端口8000,參考添加安全組規則-彈性云主機-用戶指南-安全-安全組-配置安全組規則 - 天翼云。
-
下載模型
2.1.安裝依賴包
參考文檔在天翼云使用vLLM運行DeepSeek的最佳實踐-32B等版本-自定義部署DeepSeek-步驟三:手動部署DeepSeek -> 1.安裝依賴包。
2.2.下載BGE - M3模型
將以下內容保存為 model_download.py 文件,參數 cache_dir 為模型的下載路徑,您可以按需修改,需確保存儲空間足夠存放模型。
from modelscope import snapshot_download model_dir = snapshot_download('BAAI/bge-m3', cache_dir='/root/model-path', revision='master')運行該文件,啟動模型下載。
python model_download.py2.3.運行模型
vllm serve BAAI/bge-m3 --served-model-name bge-m3 --gpu-memory-utilization 0.95 --enforce -
配置Embedding模型引擎
-
使用Embedding模型引擎
向量數據庫
Anything LLM支持多種向量數據庫,包含LanceDB (default)、Astra DB、Pinecone、Chroma、Weaviate、Qdrant、Milvus、Zilliz。以下為各個向量數據庫的對比描述:
| 向量數據庫 | 開源/閉源 | 主要特點 | 支持語言 | 部署方式 | 性能優化 | 索引算法 | 使用場景 |
|---|---|---|---|---|---|---|---|
| LanceDB | 開源 | 基于 Rust,支持多模態數據,零拷貝、自動版本控制 | Python、JavaScript/TypeScript | 本地、云 | GPU 加速 | HNSW、IVF等 | AI 應用、多模態數據檢索 |
| Astra DB | 閉源(云服務) | 高可用性、彈性擴展,支持多模態數據 | Python、Java、JavaScript等 | 云服務 | 分布式優化 | HNSW等 | 需要高可用性和彈性擴展的應用 |
| Pinecone | 閉源(云服務) | 高性能向量搜索,支持 GPU 和 TPU 加速 | Python、JavaScript等 | 云服務 | GPU/TPU 加速 | HNSW、IVF等 | 大規模向量搜索 |
| Chroma | 開源 | 適用于語義搜索和相似性匹配,支持單機和分布式部署 | Python、JavaScript等 | 本地、云 | 并行查詢優化 | HNSW等 | AI 應用、語義搜索 |
| Weaviate | 開源 | 云原生,支持多模態數據,模塊化設計 | Python、JavaScript、Java等 | 本地、云 | 高效查詢優化 | HNSW等 | 多模態數據檢索、推薦系統 |
| Qdrant | 開源 | 高效向量檢索,支持加密和安全訪問控制 | Python、JavaScript等 | 本地、云 | 并行查詢優化 | HNSW等 | 高性能向量檢索 |
| Milvus | 開源 | 分布式向量數據庫,支持大規模數據查詢 | Python、Java、C++等 | 本地、云 | GPU 加速 | HNSW、IVF等 | 人工智能、推薦系統 |
| Zilliz | 開源(云服務) | 基于 Milvus,深度優化,支持云原生部署 | Python、Java等 | 云服務 | 高性能優化 | HNSW等 | 云原生向量檢索 |
下面以Chroma為例進行說明,其他請參考對應軟件官網安裝使用。
-
創建一臺掛載XSSD云盤的本地盤云主機/通用云主機,并增加Anything LLM云主機彈性IP+端口8000 的安全組規則。創建步驟請參考創建彈性云主機-彈性云主機-快速入門 - 天翼云,增加安全組規則參考添加安全組規則-彈性云主機-用戶指南-安全-安全組-配置安全組規則 - 天翼云。
-
安裝向量數據庫
docker pull chromadb/chroma:latest docker run -d --name chroma -p 8000:8000 chromadb/chroma:latest -
配置向量數據庫
-
使用
4.1.創建工作區,聊天查詢“哪吒之魔童鬧海票房收入”,回答結果沒有相關知識庫引入,且出現了論述錯誤。
4.2.準備知識庫,內容如下:
4.3.導入知識庫,向量使用默認向量。
4.4.繼續聊天查詢“哪吒之魔童鬧海票房收入”,回答結果存在相關知識庫引入,且論述正確。