在 Windows 中使用 DeepSeek 和 Milvus 搭建个人知识库

在 Windows 中使用 DeepSeek 和 Milvus 搭建个人知识库

环境配置要求

操作系统:Windows 10 或更高版本 Docker:安装 Docker Desktop for Windows Ollama:安装 Ollama 用于模型服务 最低配置:CPU 4核、内存 8G,建议配置:CPU 8核、内存 16G

部署步骤

  1. 安装 Docker Desktop 访问 Docker 官网 下载并安装 Docker Desktop for Windows。 启动 Docker Desktop 并确保其正常运行。
  2. 下载并配置 Milvus 打开命令提示符或 PowerShell,执行以下命令克隆 Milvus 仓库:
bash 复制代码
git clone https://github.com/milvus-io/milvus.git
cd milvus/deployments/docker-standalone

修改 docker-compose.yml 文件,添加 Milvus 账号密码:

yaml 复制代码
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
  1. 启动并检查 Milvus 服务 在命令提示符或 PowerShell 中,执行以下命令启动 Milvus 服务:

    docker-compose up -d

检查服务状态:

复制代码
docker-compose ps
  1. 注册硅基流动获取 API 密钥 访问硅基流动官网,注册账号并创建 API 密钥。 记录 API 密钥,后续配置中需要使用。 5. 配置 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 官方网站 下载并安装。
  • 创建虚拟环境 :建议使用虚拟环境来管理项目依赖,以避免不同项目之间的冲突。可以使用 venvconda 来创建虚拟环境。
bash 复制代码
# 使用 venv 创建虚拟环境
python -m venv rag_env
# 激活虚拟环境
source rag_env/bin/activate  # Linux/Mac
.\rag_env\Scripts\activate  # Windows
  • 安装必要的库 :主要需要安装 langchainsentence-transformerschromadbtransformers 等库。

    pip install langchain sentence-transformers chromadb transformers torch

2. 数据准备

  • 收集数据:收集与你的应用场景相关的文本数据,例如文档、文章、网页等。将这些数据保存为文本文件,或者存储在数据库中。
  • 数据预处理 :对收集到的数据进行预处理,包括去除噪声、分词、清洗等操作。可以使用 nltkspaCy 等库来进行文本预处理。
ini 复制代码
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 加载预处理后的文本数据。
ini 复制代码
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 库创建文本嵌入模型。
ini 复制代码
from langchain.embeddings import HuggingFaceEmbeddings

# 创建嵌入模型
embeddings = HuggingFaceEmbeddings(model_name='all-MiniLM-L6-v2')
  • 创建向量数据库 :使用 chromadb 创建向量数据库,并将文本数据嵌入到向量空间中。
ini 复制代码
from langchain.vectorstores import Chroma

# 创建向量数据库
db = Chroma.from_documents(docs, embeddings)

4. 选择和加载大语言模型

  • 选择模型 :选择一个适合你需求的开源大语言模型,例如 vicunallama 等。可以从 Hugging Face 上下载模型权重。
  • 加载模型 :使用 transformers 库加载模型。
ini 复制代码
from transformers import AutoTokenizer, AutoModelForCausalLM

# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained('your_model_name')
model = AutoModelForCausalLM.from_pretrained('your_model_name')

5. 构建 RAG 系统

  • 检索器:使用向量数据库创建检索器,用于从数据库中检索与查询相关的文档。
ini 复制代码
# 创建检索器
retriever = db.as_retriever()
  • 结合检索和生成 :使用 langchainRetrievalQA 类将检索和生成过程结合起来。
ini 复制代码
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 系统回答用户的问题。
ini 复制代码
# 提出问题
query = "你的问题是什么?"
result = qa.run(query)
print(result)

注意事项

  • 模型选择:不同的大语言模型在性能和资源需求上有所不同,需要根据实际情况选择合适的模型。
  • 数据质量:数据的质量直接影响 RAG 系统的性能,需要对数据进行充分的预处理和清洗。
  • 资源需求:运行本地 RAG 系统需要一定的计算资源,特别是使用大型语言模型时,可能需要 GPU 加速。 总结

通过上述步骤,您可以轻松在 Windows 环境中构建一个具备企业级性能的私有知识库。整个过程简单快捷,适合个人用户和小型团队使用。希望这些信息对您有所帮助!

相关推荐
codingandsleeping1 小时前
浏览器的缓存机制
前端·后端
追逐时光者2 小时前
面试官问:你知道 C# 单例模式有哪几种常用的实现方式?
后端·.net
Asthenia04122 小时前
Numpy:数组生成/modf/sum/输出格式规则
后端
Asthenia04122 小时前
NumPy:数组加法/数组比较/数组重塑/数组切片
后端
Asthenia04123 小时前
Numpy:limspace/arange/数组基本属性分析
后端
Asthenia04123 小时前
Java中线程暂停的分析与JVM和Linux的协作流程
后端
Asthenia04123 小时前
Seata TCC 模式:RootContext与TCC专属的BusinessActionContext与TCC注解详解
后端
自珍JAVA3 小时前
【代码】zip压缩文件密码暴力破解
后端
今夜有雨.3 小时前
HTTP---基础知识
服务器·网络·后端·网络协议·学习·tcp/ip·http
Asthenia04123 小时前
Seata TCC 模式的空回滚与悬挂问题之解决方案-结合时序分析
后端