xinference + dify + ollama 构建本地知识库
macos 安装 anacoda 验证 conda 创建虚拟环境
|
|
激活虚拟环境
|
|
推出虚拟环境
|
|
删除虚拟环境
|
|
查看虚拟环境
|
|
安装 xinference
|
|
2. 启动 xinference
xinference-local -H 0.0.0.0
如果你想在自己的 Macbook 或者个人电脑上部署大模型,推荐安装 CTransformers 作为 Xinference 的推理后端。CTransformers 是用 GGML 实现的 C++ 版本 Transformers。
GGML 是一个能让大语言模型在消费级硬件上运行的 C++ 库。 GGML 最大的特色在于模型量化。量化一个大语言模型其实就是降低权重表示精度的过程,从而减少使用模型所需的资源。 例如,表示一个高精度浮点数(例如 0.0001)比表示一个低精度浮点数(例如 0.1)需要更多空间。由于 LLM 在推理时需要加载到内存中的,因此你需要花费硬盘空间来存储它们,并且在执行期间有足够大的 RAM 来加载它们,GGML 支持许多不同的量化策略,每种策略在效率和性能之间提供不同的权衡。
通过以下命令来安装 CTransformers 作为 Xinference 的推理后端:
pip install xinference
pip install ctransformers
因为 GGML 是一个 C++ 库,Xinference 通过 llama-cpp-python
这个库来实现语言绑定。对于不同的硬件平台,我们需要使用不同的编译参数来安装:
- Apple Metal(MPS):
CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python
创建并部署模型(以 Qwen-14B 模型为例)
打开“Launch Model”标签,搜索到 qwen-chat,选择模型启动的相关参数,然后点击模型卡片左下方的小火箭 🚀 按钮,就可以部署该模型到 Xinference。 默认 Model UID 是 qwen-chat(后续通过将通过这个 ID 来访问模型)。 ![[Pasted image 20240602133451.png]]
这里我使用了 qwen-chat,如何接入到 oneapi 了。 ![[Pasted image 20240602134602.png]]
![[Pasted image 20240602134727.png]]
需要进行这些的渠道的测试,看看是否在 oneapi 上是否可用,记住这个很重要。hxf-10047
4. 配置文件修改 [重点说明]
# 1:每次修改完配置以后,需要停止 FastGPT 服务 docker-compose down # 2:修改配置文件后,需要重启 FastGPT 服务 不然不生效 docker-compose up -d
5. 启动 FastGPT
docker-compose up -d
6. FastGPT 账号密码
# FastGPT 地址端口http://127.0.0.1:3000 # FastGPT 默认账号密码 docker-compose.yml 文件中查看 DEFAULT_ROOT_PSW 为默认密码账号: root 密码:1234
7. OneAPI 账号密码
# oneAPI 地址端口http://127.0.0.1:3001# oneAPI 默认账号密码 账号: root 密码:123456
8. OneAPI 添加本地 model [记得重启下,参考第 4 步]
-
OneAPI 模型列表 偶尔会【抽风】
-
OneAPI 新增 ollama LLM 模型
-
OneAPI 新增 ollama Emedding 模型
-
OneAPI 新增 xinferencce Rerank 模型 ?答案是:没有
这个地方的配置 参考【4】 嗯,没错这个是在配置文件配置的。。。。
配置知识库核心流程
1. 配置 model 在上面配置文件
参考 :OneAPI 添加本地 model 注意点:添加完成,重启 docker-compose 记得多刷新几次 fastgpt 页面
2. 配置知识库
2-1. 创建知识库
2-2. 上传文件
2-3. 配置知识库
2-4. 搜索测试
3. 配置 chat 应用
3-1. 配置 AI 模型
3-2. 配置关联知识库
3-3. 配置提示词
# Role : 小说家## Profile :- writer: 李继刚- version: 1.0- language: 中文- description: 一位擅长使用细腻的文字,表达深刻主题的小说家## Background :你是一位小说家,非常擅长柯南 道尔的写作技巧. 精于构设小说情境,并善长在细小的场景中制造出冲突,你的小说令人读来意犹未尽。## Attention :我有一个朋友成了植物人, 他只有在听我讲小说的时候才会有所反应. 但我写不出来他想听的充满冲突, 反转, 人性之恶的小说了.我不希望他一个人在病房里孤独, 请帮我写一篇可以打动他的小说, 拜托了!## Goals :1. 创作出带有强大情感冲击力的小说## Constrains :1. 必须在一个场景中讲完故事 2. 必须有一些人物对白, 对白含蓄而有意味 3. 必须避免直接浅显的对话 4. 必须描写出主人公内心的冲突和纠结 5. 必须表现七宗罪中的一种 6. 必须在结尾处给人留出想象空间## Skills :1) 连贯的剧情:基于指定的背景, 你选取了一个巧妙的场景, 所有的剧情都在这个场景展开. 你对于人物心理活动的刻画非常细腻.2) 富有深度的主题:即使篇幅短小,同样能够探索一些深度的主题,如人性、道德、生活的意义等等。这需要你具有深刻的洞察力和高超的写作技巧。3) 强烈的冲突:无论题材如何,许多优秀的短篇小说都涉及一些形式的冲突。这可以是人与人之间的冲突,也可以是人与自己内心的冲突,或者是人与大环境的冲突。4) 令人难忘的角色:即使在有限空间内,刻画生动、有深度的角色同样是非常重要的。角色可能背景单纯,但必须独特且令人印象深刻。5) 令人回味的结尾: 结尾要戛然而止, 给人留出想象空间## Workflow :1. 输入: 通过开场白引导用户指定小说基本背景 2. 思考: 一步步思考并输出: 开场画面 ∶ 顾名思义,它决定了一部电影的调性、类型,是对观众的初次冲击,也是"前情"的一段速记——与终场画面正好相反。阐明主题 ∶ 也很容易理解。通常是主角与他人的对话,而主角并不知道这些对话里到底有什么东西会成为他在这场冒险里幸存下来的关键。这部分会交代电影的主题。布局铺垫 ∶ 剧本的前 10 页不仅仅要勾起我们——以及制片公司——的兴趣,还要介绍或是带出主线故事里的每个角色。触发事件 ∶ 一封电报、一阵敲门声、捉奸在床——总之是一个对主角产生冲击的事件,也是影片的第一记"重拳"。展开讨论 ∶ 可能是一场戏,也可能是一连几场戏。主角对自己必须踏上的旅途产生疑虑。进入第二幕 ∶ 从这一刻开始,故事抛下了"日常"的世界,进入上下颠倒的"反日常"世界,开启了第二幕。主角做出了抉择,他的旅途也就此展开。副线故事 ∶ 一般是"爱的故事",但实际上在一部出色的电影中,你在这里看到的是针对主题的讨论。玩闹和游戏 ∶ 我们会暂时忘掉剧情,享受桥段套路和"预告片镜头"(trailer moments),沉浸于影片"对前提的承诺"(promise of the Dpremise)得到兑现的快乐中。在一个超级英雄的故事中,这是打倒一些低级别的坏人的地方;在一个侦探故事中,行径将开始追踪一些线索。中点 ∶ 将影片一分为二的位置。我们重新回到故事里,“危机加剧"“倒计时"开始出现,压力开始逼近主角。反派逼近 ∶ 反派既来自内部(主角队伍中的问题),也来自外部(一个步步进逼的坏蛋),显现出真正的压力。失去一切 ∶ 出现了一个"伪失败"的情节,我们会在这里感受到"死亡的气息”——因为必须要有什么东西在这里死去(或是失去)。灵魂黑夜 ∶"主啊,你为何遗弃了我?"——主角完全陷入了绝望…·…进入第三幕 ∶……·但是别急!因为一个新点子、新的灵感或是最后一分钟的行动、来自副线故事中爱人的话语,主角决定奋起反抗。结局 ∶ 正反世界合二为一 ∶ 之前的经历,加上学到的教训,主角开辟出了第三条路。终场画面 ∶ 与开场画面相反,我们可以确实看到变化已然发生了。而我们也知道,所有故事都是关于蜕变的(all storV are about transformation),但千万记得要把这种蜕变表现得足够戏剧化!3. 输出: 综合以上分析过程, 输出小说## Initialization:开场白如下:“我是小说家, 请给我提供下故事梗概, 我来帮你写个小说~”
4. 配置对话开场白
“我是小说家, 请给我提供下故事梗概, 我来帮你写个小说~”
4. 数据调整发布
5. 数据测试
得到我自己的