
在 Windows 中使用 DeepSeek 和 Milvus 搭建个人知识库
通过上述步骤,您可以轻松在 Windows 环境中构建一个具备企业级性能的私有知识库。选择 Embedder 首选项,选择 Ollama 并填入部署好的 Ollama 的 URL 和模型名称并保存。选择 Milvus,并填入部署好的 Milvus 的地址、用户名、密码并保存。:使用 AnythingLLM 提供的完整 UI 界面,支持多种大型模型接口。最低配置:CPU 4核、内存 8G,建议配置:
文章目录
在 Windows 中使用 DeepSeek 和 Milvus 搭建个人知识库
环境配置要求
操作系统:Windows 10 或更高版本
Docker:安装 Docker Desktop for Windows
Ollama:安装 Ollama 用于模型服务
最低配置:CPU 4核、内存 8G,建议配置:CPU 8核、内存 16G
部署步骤
- 安装 Docker Desktop
访问 Docker 官网 下载并安装 Docker Desktop for Windows。
启动 Docker Desktop 并确保其正常运行。 - 下载并配置 Milvus
打开命令提示符或 PowerShell,执行以下命令克隆 Milvus 仓库:
git clone https://github.com/milvus-io/milvus.git
cd milvus/deployments/docker-standalone
修改 docker-compose.yml 文件,添加 Milvus 账号密码:
version: '3.5'
services:
etcd:
container_name: milvus-etcd
image: registry.cn-hangzhou.aliyuncs.com/xy-zy/etcd:v3.5.5
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
volumes:
- /volumes/etcd:/etcd
healthcheck:
test: ["CMD", "etcdctl", "endpoint", "health"]
minio:
container_name: milvus-minio
image: registry.cn-hangzhou.aliyuncs.com/xy-zy/minio:RELEASE.2023-03-20T20-16-18Z
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- "9001:9001"
- "9000:9000"
volumes:
- /volumes/minio:/minio_data
command: minio server /minio_data --console-address ":9001"
milvus:
container_name: milvus-standalone
image: registry.cn-hangzhou.aliyuncs.com/xy-zy/milvus:v2.5.4
command: ["milvus", "run", "standalone"]
security_opt:
- seccomp:unconfined
environment:
ETCD_ENDPOINTS: etcd:2379
MINIO_ADDRESS: minio:9000
COMMON_USER: milvus
COMMON_PASSWORD: milvus
volumes:
- /volumes/milvus:/var/lib/milvus
- 启动并检查 Milvus 服务
在命令提示符或 PowerShell 中,执行以下命令启动 Milvus 服务:
docker-compose up -d
检查服务状态:
docker-compose ps
- 注册硅基流动获取 API 密钥
访问硅基流动官网,注册账号并创建 API 密钥。
记录 API 密钥,后续配置中需要使用。 - 配置 AnythingLLM
1.添加 Milvus
向量数据库:
打开 AnythingLLM 界面,选择向量数据库选项。
选择 Milvus,并填入部署好的 Milvus 的地址、用户名、密码并保存。
2.配置 Embedder:
选择 Embedder 首选项,选择 Ollama 并填入部署好的 Ollama 的 URL 和模型名称并保存。
3.上传数据集:
上传区域传入数据集并点击 Move 向量化后存入 Milvus。
实战:搭建本地 RAG
模型服务:通过 API 调用完整版 DeepSeek 模型,而非本地部署精简版。
向量数据库:使用 Milvus 进行高效检索。
应用前端:使用 AnythingLLM 提供的完整 UI 界面,支持多种大型模型接口。
RAG(Retrieval Augmented Generation,检索增强生成)是一种结合了信息检索和大语言模型生成能力的技术。下面为你详细介绍搭建本地 RAG 系统的步骤:
1. 环境准备
- 安装 Python:确保你的系统中安装了 Python 3.7 或更高版本。可以从 Python 官方网站 下载并安装。
- 创建虚拟环境:建议使用虚拟环境来管理项目依赖,以避免不同项目之间的冲突。可以使用
venv
或conda
来创建虚拟环境。
# 使用 venv 创建虚拟环境
python -m venv rag_env
# 激活虚拟环境
source rag_env/bin/activate # Linux/Mac
.\rag_env\Scripts\activate # Windows
- 安装必要的库:主要需要安装
langchain
、sentence-transformers
、chromadb
、transformers
等库。
pip install langchain sentence-transformers chromadb transformers torch
2. 数据准备
- 收集数据:收集与你的应用场景相关的文本数据,例如文档、文章、网页等。将这些数据保存为文本文件,或者存储在数据库中。
- 数据预处理:对收集到的数据进行预处理,包括去除噪声、分词、清洗等操作。可以使用
nltk
、spaCy
等库来进行文本预处理。
import nltk
nltk.download('punkt')
def preprocess_text(text):
# 分词
tokens = nltk.word_tokenize(text)
# 去除标点符号和停用词
filtered_tokens = [token for token in tokens if token.isalpha()]
# 合并分词结果
preprocessed_text = ' '.join(filtered_tokens)
return preprocessed_text
3. 构建向量数据库
- 加载数据:使用
langchain
加载预处理后的文本数据。
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
# 加载文本数据
loader = TextLoader('your_data.txt')
documents = loader.load()
# 文本分割
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
- 创建嵌入模型:使用
sentence-transformers
库创建文本嵌入模型。
from langchain.embeddings import HuggingFaceEmbeddings
# 创建嵌入模型
embeddings = HuggingFaceEmbeddings(model_name='all-MiniLM-L6-v2')
- 创建向量数据库:使用
chromadb
创建向量数据库,并将文本数据嵌入到向量空间中。
from langchain.vectorstores import Chroma
# 创建向量数据库
db = Chroma.from_documents(docs, embeddings)
4. 选择和加载大语言模型
- 选择模型:选择一个适合你需求的开源大语言模型,例如
vicuna
、llama
等。可以从 Hugging Face 上下载模型权重。 - 加载模型:使用
transformers
库加载模型。
from transformers import AutoTokenizer, AutoModelForCausalLM
# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained('your_model_name')
model = AutoModelForCausalLM.from_pretrained('your_model_name')
5. 构建 RAG 系统
- 检索器:使用向量数据库创建检索器,用于从数据库中检索与查询相关的文档。
# 创建检索器
retriever = db.as_retriever()
- 结合检索和生成:使用
langchain
的RetrievalQA
类将检索和生成过程结合起来。
from langchain.chains import RetrievalQA
from langchain.llms import HuggingFacePipeline
from transformers import pipeline
# 创建语言模型管道
pipe = pipeline(
"text-generation", model=model, tokenizer=tokenizer, max_new_tokens=512
)
llm = HuggingFacePipeline(pipeline=pipe)
# 创建 RAG 链
qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever)
6. 测试 RAG 系统
- 提出问题:使用构建好的 RAG 系统回答用户的问题。
# 提出问题
query = "你的问题是什么?"
result = qa.run(query)
print(result)
注意事项
- 模型选择:不同的大语言模型在性能和资源需求上有所不同,需要根据实际情况选择合适的模型。
- 数据质量:数据的质量直接影响 RAG 系统的性能,需要对数据进行充分的预处理和清洗。
- 资源需求:运行本地 RAG 系统需要一定的计算资源,特别是使用大型语言模型时,可能需要 GPU 加速。
总结
通过上述步骤,您可以轻松在 Windows 环境中构建一个具备企业级性能的私有知识库。整个过程简单快捷,适合个人用户和小型团队使用。希望这些信息对您有所帮助!
更多推荐
所有评论(0)