centos-LLM+EmbeddingModel+VectorDB-简单模型

发布于:2025-04-03 ⋅ 阅读:(13) ⋅ 点赞:(0)

参考:
Ollama平台里最流行的embedding模型: nomic-embed-text 模型介绍和实践-CSDN博客
https://blog.csdn.net/skywalk8163/article/details/145498041

https://docs.cherry-ai.com/knowledge-base/data

Installation — Sentence Transformers documentation
https://www.sbert.net/docs/installation.html

GitHub - huggingface/transformers: 🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX.
https://github.com/huggingface/transformers

快速入门 | 🦜️🔗 Langchain
https://python.langchain.com.cn/docs/get_started/quickstart

环境:
centos 7,anaconda3,CUDA 11.6


问题描述

公司希望定制一个知识库,结合大语言模型,让用户在提问的时候可以获得专注于生物学领域的答案。

本文只写一个快速实现的、粗略的方案。针对生物学领域的会在后续的文章中细化。

方案设计

参考Cherry Studio的方案。
在这里插入图片描述
关于Cherry Studio的简单使用见上篇:

win10-CherryStudio-简单使用+自定义知识库-CSDN博客
https://blog.csdn.net/pxy7896/article/details/146937655

实现

安装

// 创建conda环境.
conda create -n llm python=3.11

// 安装pytorch, gpu版(版本号是根据 CUDA 11.6 确定的)
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116

// 安装transformers
pip install transformers

// 安装sentence-transformers
pip install -U sentence-transformers

// 安装langchain
pip --default-timeout=1000  install langchain
pip install langchain_community

说明:

  • sentence-transformers建议:Python 3.9+, PyTorch 1.11.0+, and transformers v4.41.0+
  • 安装torch的时候可能太慢,可以先下载两个比较大的包(直接搜索名称,找到清华源下载。具体的版本,在pip安装torch的时候肯定会卡在那里,能看到):nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl(346MB)和torch-2.6.0-cp311-cp311-manylinux1_x86_64.whl(731MB),切换到环境中,将安装包放到某个路径下,使用pip install "torch-*.whl"这样的命令即可安装。安装好两个大包之后,再次重复命令,即可顺利安装

测试

# 放在开头
# 使用Hugging face国内镜像
import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'  


# 依赖库:sentence-transformers + FAISS + ChatGLM3
from sentence_transformers import SentenceTransformer
from langchain_community.vectorstores import FAISS
from transformers import AutoTokenizer, AutoModel

# 1. Embedding Model
encoder = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')

# 2. 向量数据库
documents = ["基因TP53与癌症相关...", "阿司匹林抑制COX-2..."]  # 替换为你的生物医学文档
db = FAISS.from_texts(documents, encoder)

# 3. LLM
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).half().cuda()

# 工作流程
question = "TP53基因的功能是什么?"
q_vector = encoder.encode(question)
docs = db.similarity_search_by_vector(q_vector, k=1)
prompt = f"根据以下内容回答问题:{docs[0].page_content}\n问题:{question}"
response, _ = model.chat(tokenizer, prompt)
print(response)

# 输出
'''

'''

先下班了,输出结果明天补。


网站公告

今日签到

点亮在社区的每一天
去签到