【大模型开发指南】llamaindex配置deepseek、jina embedding及chromadb实现本地RAG及知识库(win系统、CPU适配)

说一些坑,本来之前准备用milvus,但是发现win搞不了(docker都配好了)。然后转头搞chromadb。这里面还有就是embedding一般都是本地部署,但我电脑是cpu的没法玩,我就选了jina的embedding性能较优(也可以换glm的embedding但是要改代码)。最后问题出在deepseek与llamaindex的适配,因为采用openai的接口,这里面改了openai库的源码然后对llamaindex加了配置项才完全跑通。国内小伙伴如果使用我这套方案可以抄,给我点个赞谢谢。

主要环境:

os:win11
python3.10
llamaindex  0.11.20
chromadb   0.5.15
这个文件是官方例子,自己弄个也成

源码如下:

# %%
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.core import StorageContext
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from IPython.display import Markdown, displayfrom llama_index.llms.openai import OpenAI
import chromadb# %%import openai
openai.api_key = "sk"openai.api_base = "https://api.deepseek.com/v1"
llm = OpenAI(model='deepseek-chat',api_key=openai.api_key, base_url=openai.base_url)from llama_index.core import Settings# llm = OpenAI(api_key=openai.api_key, base_url=openai.base_url)
Settings.llm = OpenAI(model="deepseek-chat",api_key=openai.api_key, base_url=openai.base_url)
# %%
import osjinaai_api_key = "jina"
os.environ["JINAAI_API_KEY"] = jinaai_api_keyfrom llama_index.embeddings.jinaai import JinaEmbeddingtext_embed_model = JinaEmbedding(api_key=jinaai_api_key,model="jina-embeddings-v3",# choose `retrieval.passage` to get passage embeddingstask="retrieval.passage",
)# %%
# create client and a new collection
chroma_client = chromadb.EphemeralClient()
chroma_collection = chroma_client.create_collection("quickstart")# %%# define embedding function
embed_model = text_embed_model# load documents
documents = SimpleDirectoryReader("./data/paul_graham/").load_data()# save to diskdb = chromadb.PersistentClient(path="./chroma_db")
chroma_collection = db.get_or_create_collection("quickstart")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
storage_context = StorageContext.from_defaults(vector_store=vector_store)index = VectorStoreIndex.from_documents(documents, storage_context=storage_context, embed_model=embed_model
)# load from disk
db2 = chromadb.PersistentClient(path="./chroma_db")
chroma_collection = db2.get_or_create_collection("quickstart")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
index = VectorStoreIndex.from_vector_store(vector_store,embed_model=embed_model,
)# Query Data from the persisted index
query_engine = index.as_query_engine()
response = query_engine.query("What did the author do growing up?")
print('response:',response)

1.llamaindex如何配置deepseek

在这里插入图片描述
找到llama_index下面的openai的utils配置里,加入"deepseek-chat":128000,
路径C:\Users\USER.conda\envs\workspace\lib\site-packages\llama_index\llms\openai\utils.py

from llama_index.llms.openai import OpenAIllm = OpenAI(model="deepseek-chat", base_url="https://api.deepseek.com/v1", api_key="sk-")response = llm.complete("见到你很高兴")
print(str(response))

2.llama使用jina

# Initilise with your api key
import osjinaai_api_key = "jina_"
os.environ["JINAAI_API_KEY"] = jinaai_api_keyfrom llama_index.embeddings.jinaai import JinaEmbeddingtext_embed_model = JinaEmbedding(api_key=jinaai_api_key,model="jina-embeddings-v3",# choose `retrieval.passage` to get passage embeddingstask="retrieval.passage",
)embeddings = text_embed_model.get_text_embedding("This is the text to embed")
print("Text dim:", len(embeddings))
print("Text embed:", embeddings[:5])query_embed_model = JinaEmbedding(api_key=jinaai_api_key,model="jina-embeddings-v3",# choose `retrieval.query` to get query embeddings, or choose your desired task typetask="retrieval.query",# `dimensions` allows users to control the embedding dimension with minimal performance loss. by default it is 1024.# A number between 256 and 1024 is recommended.dimensions=512,
)embeddings = query_embed_model.get_query_embedding("This is the query to embed"
)
print("Query dim:", len(embeddings))
print("Query embed:", embeddings[:5])

3.llamaindex 使用chromadb

# %%
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.core import StorageContext
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from IPython.display import Markdown, displayfrom llama_index.llms.openai import OpenAI
import chromadb# %%import openai
openai.api_key = "sk-"openai.api_base = "https://api.deepseek.com/v1"from llama_index.core import Settings# llm = OpenAI(api_key=openai.api_key, base_url=openai.base_url)
Settings.llm = OpenAI(model="deepseek-chat",api_key=openai.api_key, base_url=openai.base_url)# %%
import osjinaai_api_key = "jina_"
os.environ["JINAAI_API_KEY"] = jinaai_api_keyfrom llama_index.embeddings.jinaai import JinaEmbeddingtext_embed_model = JinaEmbedding(api_key=jinaai_api_key,model="jina-embeddings-v3",# choose `retrieval.passage` to get passage embeddingstask="retrieval.passage",
)# %%
# create client and a new collection
chroma_client = chromadb.EphemeralClient()
chroma_collection = chroma_client.create_collection("quickstart")# %%# define embedding function
embed_model = text_embed_model# load documents
documents = SimpleDirectoryReader("./data/paul_graham/").load_data()# %%
# set up ChromaVectorStore and load in data
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)# %%storage_context = StorageContext.from_defaults(vector_store=vector_store)# %%
index = VectorStoreIndex.from_documents(documents, storage_context=storage_context, embed_model=embed_model
)# Settings.llm = llm# Query Data
query_engine = index.as_query_engine()
response = query_engine.query("What did the author do growing up?")
print('response:',response)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/58373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue前端sku实现

this.value.skuStockList [];let skuList this.value.skuStockList;//只有一个属性时if (this.selectProductAttr.length 1) {let attr this.selectProductAttr[0];for (let i 0; i < attr.values.length; i) {skuList.push({spData: JSON.stringify([{key:attr.name,v…

pyspark基础准备

1.前言介绍 学习目标&#xff1a;了解什么是Speak、PySpark&#xff0c;了解为什么学习PySpark&#xff0c;了解课程是如何和大数据开发方向进行衔接 使用pyspark库所写出来的代码&#xff0c;既可以在电脑上简单运行&#xff0c;进行数据分析处理&#xff0c;又可以把代码无缝…

数据库基础(4) . 数据库结构

2.基础结构 2.1.结构及名称 数据库 database 表空间 tablespaces(Oracle) 表格 table 字段 column 记录 record 值 value 2.2.数据库 database 在配置文件中指定存放位置 # 设置mysql数据库的数据的存放目录 datadirD:\MySQL\mysql-8.0.16-winx64\data每个数据库对应…

Meme 币生态全景图分析:如何获得超额收益?

近期&#xff0c;BTC 再次突破 7 万美元大关&#xff0c;市场上贪婪指数再次达到 80&#xff0c;而 Meme 币往往是每次牛市冲锋的号角&#xff0c;比如 $GOAT 5 天内价格一度上涨超 1 万倍。通过对当前市场 TOP 25 Meme 币的交易数据分析&#xff0c;我们发现了几个值得关注的市…

数据结构之二叉树——堆 详解(含代码实现)

1.堆 如果有一个关键码的集合 K { &#xff0c; &#xff0c; &#xff0c; … &#xff0c;}&#xff0c;把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中&#xff0c;则称为小堆( 或大堆 ) 。将根节点最大的堆叫做最大堆或大根堆&#xff0c;根节点最小的…

高级 <HarmonyOS主题课>构建华为支付服务的课后习题

五色令人目盲&#xff1b; 五音令人耳聋&#xff1b; 五味令人口爽&#xff1b; 驰骋畋猎&#xff0c;令人心发狂&#xff1b; 难得之货&#xff0c;令人行妨&#xff1b; 是以圣人为腹不为目&#xff0c;故去彼取此。 本篇内容主要来自&#xff1a;<HarmonyOS主题课>构建…

酒店民宿小程序,探索行业数字化管理发展

在数字化发展时代&#xff0c;各行各业都开始向数字化转型发展&#xff0c;酒店民宿作为热门行业也逐渐趋向数字、智能化发展。 对于酒店民宿来说&#xff0c;如何将酒店特色服务优势等更加快速运营推广是重中之重。酒店民宿小程序作为一款集结预约、房源管理、客户订单管理等…

猎板PCB2到10层数的科技进阶与应用解析

1. 单层板&#xff08;Single-sided PCB&#xff09; 定义&#xff1a;单层板是最基本的PCB类型&#xff0c;导线只出现在其中一面&#xff0c;因此被称为单面板。限制&#xff1a;由于只有一面可以布线&#xff0c;设计线路上有许多限制&#xff0c;不适合复杂电路。应用&…

Python网络爬虫入门篇!

预备知识 学习者需要预先掌握Python的数字类型、字符串类型、分支、循环、函数、列表类型、字典类型、文件和第三方库使用等概念和编程方法。 2. Python爬虫基本流程 a. 发送请求 使用http库向目标站点发起请求&#xff0c;即发送一个Request&#xff0c;Request包含&#xf…

python数据结构基础(5)

本章学习的是栈.它最突出的特点是后进先出,与队列恰好相反,但其在实现过程中与队列异曲同工. 栈的基本结构: 栈是按照有序的后进先出规则运行的一种结构,其插入和删除操作均在栈项进行这一点区别于队列的队尾进队,队头出队. 栈一般包括入栈和出栈操作,且有一个顶指针(top)用于…

gerrit 搭建遇到的问题

1、启动Apache&#xff0c;端口被占用 : AH00072: make sock: could not bind to address (0S 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。: AH00072: make sock: could not bind to address 0.0.0.:443 a AH00451: no listening sockets available, shutti…

提升安全上网体验:Windows 11 启用 DOH(阿里公共DNS)

文章目录 阿里公共 DNS 介绍免费开通云解析 DNS 服务Windows 编辑 DNS 设置配置 IPv4配置 IPv6 路由器配置 DNS 阿里公共 DNS 介绍 https://alidns.com/ 免费开通云解析 DNS 服务 https://dnsnext.console.aliyun.com/pubDNS 开通服务后&#xff0c;获取 DOH 模板&#xff0…

项目实战使用gitee

1.创建本地仓库 2.进行提交到本地仓库 创建仓库后在idea中会显示图标&#xff0c;点击绿色的√进行快速提交 3.绑定远程仓库 4.番外篇-创建gitee仓库 注意不要勾选其他

【大模型LLM面试合集】大语言模型架构_chatglm系列模型

chatglm系列模型 1.ChatGLM 1.1 背景 主流的预训练框架主要有三种&#xff1a; autoregressive自回归模型&#xff08;AR模型&#xff09;&#xff1a;代表作GPT。本质上是一个left-to-right的语言模型。通常用于生成式任务&#xff0c;在长文本生成方面取得了巨大的成功&a…

yolov8涨点系列之HiLo注意力机制引入

文章目录 HiLo 注意力介绍原理特点 yolov8增加CBAM具体步骤HiLo代码(1)在__init.py__conv.py文件的__all__内添加‘HiLo’(2)conv.py文件复制粘贴HiLo代码(3)修改task.py文件 yolov8.yaml文件增加HiLo注意力机制yolov8.yamlyolov8.yaml引入HiLo注意力机制 将 HiLo 注意力引入 Y…

ReactPress—基于React的免费开源博客CMS内容管理系统

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎提出宝贵的建议&#xff0c;感谢Star。 ![ReactPress](https://i-blog.csdnimg.cn/direct/0720f155edaa4eadba796f4d96d394d7.png#pic_center ReactPress 是使用React开发的开源发布平台&…

DO-178DO-254标准主要内容和相关设计要求

DO-178&DO-254标准主要内容和相关设计要求 0. 源由1. DO-178 (软件)2. DO-254 (硬件)3. 国内认证现状4. DO-178&#xff08;软件&#xff09;和 DO-254&#xff08;硬件&#xff09;对比表格5. 总结6. 附录6.1 电子产品认证标准6.2 微型无人机认证6.3 整机产品交付6.4 国内…

PCL 点云配准 配准精度评价指标MSE

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新) 一、概述 在点云配准中,均方误差(MSE, Mean Squared Erro…

Risc-v:mhartid寄存器

简介 mhartid&#xff08;Machine Hart ID Register&#xff09;是 RISC-V 架构中的一个控制和状态寄存器&#xff08;CSR&#xff09;&#xff0c;用于存储当前硬件线程&#xff08;hart&#xff09;的标识符。 在多核处理器中&#xff0c;每个核心可能有一个或多个硬件线程&a…

金华迪加 现场大屏互动系统 mobile.do.php 任意文件上传漏洞复现

0x01 产品简介 金华迪加现场大屏互动系统是一种集成了先进技术和创意设计的互动展示解决方案,旨在通过大屏幕和多种交互方式,为观众提供沉浸式的互动体验。该系统广泛应用于各类活动、展览、会议等场合,能够显著提升现场氛围和参与者的体验感。 0x02 漏洞概述 金华迪加 现…