当前位置: 首页 > wzjs >正文

装修公司那家好台州网站优化公司

装修公司那家好,台州网站优化公司,企业网站备案还是不用备案,海南政策最新消息学习视频: 04 向量数据库_哔哩哔哩_bilibili 目录 什么是 RAG ? 下载文本向量模型 模型示例数据 切割向量化代码 向量数据库 文本生成模型(推理)/ deepseek本地部署 什么是 RAG ? Retrieval-Augmented Generation (RAG) 是一种结合了信息检…

学习视频:

04 向量数据库_哔哩哔哩_bilibili

目录

什么是 RAG ?

下载文本向量模型

模型示例数据

切割向量化代码

向量数据库

文本生成模型(推理)/ deepseek本地部署


什么是 RAG ?

        Retrieval-Augmented Generation (RAG) 是一种结合了信息检索与文本生成的先进模型架构,旨在提高自然语言处理任务中的准确性和相关性。不同于传统的端到端生成模型,RAG 通过整合外部知识库来增强其输出内容的质量。具体来说,RAG 首先利用一个检索组件从大规模语料库中动态查找与输入查询最相关的文档或段落,然后将这些检索到的信息作为额外上下文传递给生成组件。这样,生成模型不仅能基于预训练的语言知识,还能依据最新的、具体的资讯来生成回复,从而确保了输出内容的时效性和准确性。

RAG 特别适用于需要实时更新和专业领域知识的应用场景,如智能问答系统、个性化推荐和对话机器人等。通过这种方式,RAG 克服了传统生成模型仅依赖于固定时间点上训练数据的局限,实现了更灵活、更强大的自然语言理解和生成能力。这种架构不仅提升了对话语义的相关性,也加强了事实核查的能力,使得生成的回答更加可靠。

本文实现框架:

通过将资料文本向量化并存入数据库,完成向量数据库的构造,再将用户搜索内容向量化后去向量数据库搜索,搜索到最相似的文本,将搜索内容和搜索文本一起问给大语言模型,进行润色、美化。

下载文本向量模型

Ollama 是一款旨在简化在本地运行大型语言模型的工具,支持快速部署与管理,如DeepSeek等模型。它降低了技术门槛,使用户能轻松进行开发与实验,加速AI技术的应用与创新。

下载 Ollama,大家可以参考这篇, Ollama 和 大模型数据包下载到其他盘符教程:

https://zhuanlan.zhihu.com/p/22615618497
右下角确定 ollama 已启动
在 C:\Users\用户名\.ollama 这个文件夹是下载模型的位置,就算 ollama 下载到了其他盘,但 .ollama 还是只会出现在 C 盘,解决方案如下:
新建用户变量,变量值为自己模型想要存储的位置:
停止运行 Ollama,然后点击 ollama.app.exe 再次运行。
下载文本向量模型:
ollama pull nomic-embed-text

成功下载:

并且是下载到指定位置的:
manifests 即为模型下载位置。

模型示例数据

因为数据不多,我这里就直接给出:
风寒感冒
症状:恶寒重,发热轻,无汗,头痛,肢节酸痛,鼻塞声重,或鼻痒喷嚏,时流清涕,咽痒,咳嗽,咳痰稀薄色白,口不渴或渴喜热饮,舌苔薄白而润,脉浮或浮紧。
药方:荆防败毒散。药物组成包括荆芥、防风、羌活、独活、柴胡、前胡、川芎、枳壳、茯苓、桔梗、甘草等,具有辛温解表的功效。风热感冒
症状:发热,微恶风,有汗,头胀痛,鼻塞流黄涕,咳嗽,痰黏或黄,咽燥,或咽喉红肿疼痛,口渴,舌尖边红,苔薄黄,脉浮数。
药方:银翘散。主要药物有金银花、连翘、桔梗、薄荷、竹叶、生甘草、荆芥穗、淡豆豉、牛蒡子等,能辛凉解表,清热解毒。痰湿蕴肺
症状:咳嗽反复发作,咳声重浊,痰多,因痰而嗽,痰出咳平,痰黏腻或稠厚成块,色白或带灰色,每于早晨或食后则咳甚痰多,进甘甜油腻食物加重,胸闷,脘痞,呕恶,食少,体倦,大便时溏,舌苔白腻,脉象濡滑。
药方:二陈平胃散合三子养亲汤。二陈平胃散由半夏、陈皮、茯苓、甘草、苍术、厚朴组成,三子养亲汤由紫苏子、白芥子、莱菔子组成,可燥湿化痰,理气止咳。胃痛
症状:胃痛暴作,恶寒喜暖,得温痛减,遇寒加重,口淡不渴,或喜热饮,舌淡苔薄白,脉弦紧。
药方:良附丸。由高良姜、香附组成,能温胃散寒,理气止痛。脾胃虚寒
症状:胃痛隐隐,绵绵不休,喜温喜按,空腹痛甚,得食则缓,劳累或受凉后发作或加重,泛吐清水,神疲纳呆,四肢倦怠,手足不温,大便溏薄,舌淡苔白,脉虚弱或迟缓。
药方:黄芪建中汤。药物包含黄芪、桂枝、芍药、炙甘草、生姜、大枣、饴糖,可温中健脾,和胃止痛。失眠
症状:不易入睡,多梦易醒,心悸健忘,神疲食少,伴头晕目眩,四肢倦怠,腹胀便溏,面色少华,舌淡苔薄,脉细无力。
药方:归脾汤。由白术、茯神、黄芪、龙眼肉、酸枣仁、人参、木香、炙甘草、当归、远志等组成,有补益心脾,养血安神之效。

切割向量化代码

读取文件数据,按行区域切割,并放入列表,通过向本地下载的文本向量模型发送 post 请求,将切割分块的文本转换成文本向量:

import requests
import functoolsdef file_chunk_list():# 1.读取文件内容with open("E:\py_project\\rag\中医v1.txt", encoding='utf-8', mode='r') as fp:data = fp.read()# 2.根据换行切割chunk_list = data.split("\n\n")return [chunk for chunk in chunk_list if chunk]def ollama_embedding_by_api(text):res = requests.post(url="http://127.0.0.1:11434/api/embeddings",json={"model": "nomic-embed-text","prompt": text})embedding = res.json()['embedding']return embeddingdef run():chunk_list = file_chunk_list()for chunk in chunk_list:vector = ollama_embedding_by_api(chunk)print(chunk)print(vector)if __name__ == '__main__':run()

向量数据库

将前面的向量化文本存储进向量数据库中,能做向量数据库的有很多,这里使用最简单的 chromadb,先下载:
pip install chromadb

导入后创建数据库及表(理解为文件夹和excel表):

import chromadbclient = chromadb.PersistentClient(path="db/chroma_demo")  # 数据库 类似于=文件夹
collection = client.get_or_create_collection(name="collection_v1")  # 集合   类似于=表格

添加数据:

def ollama_embedding_by_api(text):res = requests.post(url="http://127.0.0.1:11434/api/embeddings",json={"model": "nomic-embed-text","prompt": text})embedding = res.json()['embedding']return embeddingdocuments = ["风寒感冒", "寒邪客胃", "心脾两虚"]
ids = [str(uuid.uuid4()) for _ in documents]
embeddings = [ollama_embedding_by_api(i) for i in documents]# 插入数据
collection.add(ids=ids,documents=documents,embeddings=embeddings
)
这里的 uuid.uuid4() 的作用是生成唯一 ID,这个 ID documents 对应的数据没有直接关系(即,纯粹是位置上的对应)。这对于数据库存储、文档检索系统等非常有用,确保每个文档都有一个独一无二的标识符。
查询数据:
qs = "感冒胃疼"
qs_embedding = ollama_embedding_by_api(qs)res = collection.query(query_embeddings=[qs_embedding, ],query_texts=qs, n_results=2)
print(res)

将查询文本转换成 文本向量,通过 query ,传入文本向量、文本、查询个数 n_results 三个参数,查询到数据库中前 n_results 个相似度最高的文本:

这里输入“感冒胃疼”,查询到“风寒感冒”、“寒邪客胃”。

文本生成模型(推理)/ deepseek本地部署

通过 Ollama 下载 deepseek 模型:
ollama pull deepseek-r1:7b

想要下载更小或者更大模型的,可以看看下表:

DeepSeek模型版本参数量特点适用场景硬件配置
DeepSeek-R1-1.5B1.5B轻量级模型,参数量少,模型规模小适用于轻量级任务,如短文本生成、基础问答等4核处理器、8G内存,无需显卡
DeepSeek-R1-7B7B平衡型模型,性能较好,硬件需求适中适合中等复杂度任务,如文案撰写、表格处理、统计分析等8核处理器、16G内存,Ryzen7或更高,RTX 3060(12GB)或更高
DeepSeek-R1-8B8B性能略强于7B模型,适合更高精度需求适合需要更高精度的轻量级任务,比如代码生成、逻辑推理等8核处理器、16G内存,Ryzen7或更高,RTX 3060(12GB)或4060
DeepSeek-R1-14B14B高性能模型,擅长复杂的任务,如数学推理、代码生成可处理复杂任务,如长文本生成、数据分析等i9-13900K或更高、32G内存,RTX 4090(24GB)或A5000
DeepSeek-R1-32B32B专业级模型,性能强大,适合高精度任务适合超大规模任务,如语言建模、大规模训练、金融预测等Xeon 8核、128GB内存或更高,2-4张A100(80GB)或更高
DeepSeek-R1-70B70B顶级模型,性能最强,适合大规模计算和高复杂任务适合高精度专业领域任务,比如多模态任务预处理。这些任务对硬件要求非常高,需要高端的 CPU 和显卡,适合预算充足的企业或研究机构使用Xeon 8核、128GB内存或更高,8张A100/H100(80GB)或更高
DeepSeek-R1-671B671B超大规模模型,性能卓越,推理速度快,适合极高精度需求适合国家级 / 超大规模 AI 研究,如气候建模、基因组分析等,以及通用人工智能探索64核、512GB或更高,8张A100/H100
下载完成后即完成本地部署,可在本地实现对话,打开 cmd ,输入 ollama list,查看  ollama 上下载的模型:
输入运行命令启动模型:
ollama run deepseek-r1:7b

集成完整代码:
import uuid
import chromadb
import requestsdef file_chunk_list():# 1.读取文件内容with open("E:\py_project\\rag\中医v1.txt", encoding='utf-8', mode='r') as fp:data = fp.read()# 2.根据换行切割chunk_list = data.split("\n\n")return [chunk for chunk in chunk_list if chunk]def ollama_embedding_by_api(text):res = requests.post(url="http://127.0.0.1:11434/api/embeddings",json={"model": "nomic-embed-text","prompt": text})embedding = res.json()['embedding']return embeddingdef ollama_generate_by_api(prompt):response = requests.post(url="http://127.0.0.1:11434/api/generate",json={"model": "deepseek-r1:7b","prompt": prompt,"stream": False,'temperature': 0.1})res = response.json()['response']return resdef initial():client = chromadb.PersistentClient(path="db/chroma_demo")# 创建集合,先删除之前存储,再创建,防止频繁存储数据client.delete_collection("collection_v2")collection = client.get_or_create_collection(name="collection_v2")# 构造数据documents = file_chunk_list()ids = [str(uuid.uuid4()) for _ in range(len(documents))]embeddings = [ollama_embedding_by_api(text) for text in documents]# 插入数据collection.add(ids=ids,documents=documents,embeddings=embeddings)def run():# 关键字搜索qs = "风热感冒"qs_embedding = ollama_embedding_by_api(qs)client = chromadb.PersistentClient(path="db/chroma_demo")collection = client.get_collection(name="collection_v2")res = collection.query(query_embeddings=[qs_embedding, ], query_texts=qs, n_results=2)result = res["documents"][0]context = "\n".join(result)prompt = f"""你是一个中医问答机器人,任务是根据参考信息回答用户问题,如果参考信息不足以回答用户问题,请回复不知道,不要去杜撰任何信息,请用中文回答。参考信息:{context},来回答问题:{qs},"""result = ollama_generate_by_api(prompt)print(result)if __name__ == '__main__':initial()run()

注意 client.delete_collection("collection_v2") 是每次存入数据前,删除上一次存入的数据,第一次运行得先注释掉,不然会报错,因为第一次数据库中并没有数据。

将在文本向量数据库中检索到的文本和问题,合并发送给大模型,让它进行润色。
也可将此代码部署到自己 web 或者 app 上,目前在做一个药方简化 web,准备替换成自己的数据,然后部署到自己 web 中,通过 Django websocket 实现实时对话,并接入药方图片识别和老人语言识别 api,以更好地服务老年人、服务大众。我将实时更新项目进展。
感谢您的观看!!!
http://www.dtcms.com/wzjs/441228.html

相关文章:

  • ps做网站首页怎么运用起来seo兼职论坛
  • 网站建设环境配置百度seo排名优化如何
  • 怎样建设邮箱网站樱桃bt官网
  • 专门做旅游的视频网站有哪些友情链接站长平台
  • 原网站开发新功能网络营销包括几个部分
  • 做网站 需要多少钱长沙网站推广工具
  • 网站建设营销推广实训总结seo网络营销是什么意思
  • 古典asp网站源码公众号如何推广引流
  • 建网站需要多少费用模板建站的网站
  • 免费生成图片的网站百度云引擎搜索
  • flash as3 网站模板刷百度指数
  • 赤壁市住房建设委员会网站seo优化排名方法
  • 贸易网站建设案例b站推广网站
  • 百度网址大全 官网首页百度首页排名优化多少钱
  • 做室内效果图网站网络营销推广方式包括哪几种
  • 淘宝网站怎么做特价搜索引擎广告推广
  • 崇信县门户网站留言首页信息流广告投放平台
  • 安阳网站推广免费b站推广网站2023
  • 门户类网站备案百度宣传推广
  • 有什么网站做投标设计soe搜索优化
  • 做网站和做微信小程序页面优化
  • wordpress显示作者墙seo管理系统创作
  • 旅游网站开发实现开题报告手机百度关键词优化
  • o2o网站建设好么如何在百度上做免费推广
  • 惠州做网站好的公司google海外推广
  • 做导购网站如何获利交换友情链接的方法
  • asp网站 seo怎么做优化关键词
  • 给客户做网站免费发布产品信息的网站
  • 人网站设计与制作p站关键词排名
  • 许昌哪个网站做苗木网络推广有哪几种方法