首页 > 教程攻略 > ai资讯 >xinference + dify + ollama 构建本地知识库

xinference + dify + ollama 构建本地知识库

来源:互联网 时间:2026-06-02 08:29:14

windows 安装conda

在本地搭建AI开发环境,首先要解决包管理和虚拟环境的问题。Conda是绕不开的工具,尤其是Windows用户,配置起来有些细节需要留意。下面按步骤来,每一步都附上了实际命令,可以直接复制执行。

1. 下载安装包

前往Anaconda官网获取安装包,推荐使用2024.02版本,稳定且后续兼容性好。

https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Windows-x86_64.exe

2. 安装

双击下载好的exe文件,一路“Next”即可。安装路径建议选择非系统盘(比如D盘),避免后续因权限问题导致写入失败。

双击安装包,一路下一步

3. 配置环境变量

安装完成后需要手动添加环境变量,否则命令行中无法直接使用conda命令。路径按实际安装位置调整,下面的示例以D盘为例。

系统->高级系统设置->环境变量->系统变量->Path->添加
D:\Anaconda3
D:\Anaconda3\Scripts
D:\Anaconda3\Library\bin

4. 验证

打开新的命令行窗口(一定要重新打开,否则环境变量不生效),输入以下命令,如果能看到conda版本号,说明安装成功。

conda --version

5. 镜像源

国内用户访问默认源速度较慢,建议先配置清华镜像。执行以下命令即可添加常用频道,并开启显示源地址。

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tshua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro/
conda config --set show_channel_urls yes

6. 创建虚拟环境

虚拟环境可以隔离不同项目的依赖。例如创建一个名为xinference、Python版本为3.11的环境。

conda create -n xinference python=3.11.0

7. 激活虚拟环境

conda activate xinference

8. 退出虚拟环境

conda deactivate

9. 删除虚拟环境

当环境不再需要时,可以彻底删除(包括所有包)。

conda remove -n xinference --all

10. 查看虚拟环境

列出当前所有已创建的环境,方便管理。

conda env list

11. 配置pytorch

深度学习项目中,PyTorch是最常用的框架之一。根据你的显卡情况选择对应的命令。如果有NVIDIA GPU且安装了CUDA 12.1,推荐用pip3安装,更简单可靠。

# 安装pytorch官方指南
https://pytorch.org/get-started/locally/

# nvidia(conda方式,较慢)
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

# pip3(推荐,速度快)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

# 纯CPU版本
conda install pytorch torchvision torchaudio cpuonly -c pytorch
conda install scikit-learn

12. 验证pytorch是否启用GPU

安装完毕后,通过一段Python代码检测CUDA是否可用。如果返回True,说明GPU被正确识别;否则需要排查安装问题。

import torch
print(torch.cuda.is_a vailable())

# 如果返回True则说明启用了gpu
# 如果返回False则说明没有启用gpu,需要卸载重新安装
# 1. 卸载torch:在anaconda3\Lib\site-packages下,删除torch和torch-2.2.1.dist-info两个文件夹
# 2. 重新安装(推荐用pip3)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

13. 安装chatglm-cpp

如果要运行轻量级的大语言模型,chatglm-cpp是一个不错的选择。需要根据Python版本选择对应的wheel文件,这里以Python 3.11为例。

# 选择版本
https://github.com/li-plus/chatglm.cpp/releases
# 下载
https://github.com/li-plus/chatglm.cpp/releases/download/v0.3.1/chatglm_cpp-0.3.1-cp311-cp311-win_amd64.whl
# 安装
pip3 install chatglm_cpp-0.3.1-cp311-cp311-win_amd64.whl

安装 xinference

Xinference是一个模型推理服务平台,方便本地部署和管理各种开源模型。安装同样通过pip完成。

# 官网
https://github.com/xorbitsai/inference

# 执行命令
pip3 install xinference['all']

1. 验证安装,处理cmake相关错误

部分Windows环境在安装依赖时可能遇到cmake编译问题,需要安装Visual Studio的C++开发组件。具体操作如下:

# 打开Visual Studio官网
https://visualstudio.microsoft.com/zh-hans/
# 下载Community版(免费)
https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&channel=Release&version=VS2022&source=VSLandingPage&cid=2030&passive=false
# 安装时勾选“Desktop development with C++”(使用C++桌面开发)
# 完成后重新启动终端即可。

2. 启动xinference

启动服务时需要指定监听IP和端口。IP填写你机器的局域网地址,这样同网段的其他设备也能访问。

# 启动xinference(需修改ip和端口)
xinference-local --host 192.168.50.123 --port 9997

# 访问web界面
http://192.168.50.123:9997

3. 配置xinference的模型存储路径

默认情况下模型下载到用户目录的.xinference下。如果想自定义路径,可以在注册模型时指定。下面是默认路径的参考:

# model的默认路径
C:\Users\guoya\.xinference

# 配置几种模型路径(按需创建目录)
C:\Users\guoya\.xinference\rerank-model
C:\Users\guoya\.xinference\llm-model
C:\Users\guoya\.xinference\embedding-model

# 在web界面注册模型时,填写对应的Model Path

4. 配置xinference模型(LLM)

在web界面中选择LLM模型,点击出现的小火箭图标,填写一个自定义的model ID(名称自定)。注意不要勾选CPU模式,否则会非常慢。

后面配图展示了具体步骤,包括下载进度、启动Embedding模型和Rerank模型的界面。

5. 下载过程:

6. 启动 Embedding 模型:

7. 启动 Rerank 模型:

安装 dify

Dify是一个强大的LLM应用开发平台,支持拖拽式工作流和知识库管理。安装依赖Docker,系统要求至少2核CPU、4GB内存。

1. 系统要求

确保机器满足:CPU >= 2 Core,RAM >= 4GB。操作系统不限,但推荐Linux或Windows Server。

2. 快速启动

使用官方提供的docker-compose文件,一键启动所有服务。

git clone https://github.com/langgenius/dify.git
cd dify/docker
docker compose up -d

启动成功后,浏览器访问 http://localhost/install 进入初始化安装界面,按提示完成设置。

3. 配置 LLM MODEL

4. 配置 EMBEDDING MODEL

5. 配置 RERANK MODEL

6. 创建知识库

7. 创建应用

8. 测试模型

本地知识库所需要准备

搭建私有知识库需要准备模型和数据源。模型包括LLM、Embedding和Rerank三类,数据源可以是文档、网页或文本片段。

1. 所需模型

LLM用于回答生成,Embedding用于将文本向量化,Rerank用于对检索结果重新排序。三种模型都需要在Xinference或Dify中预先部署。

2. 所需要测试数据源

可以用公开的文学作品作为测试数据,比如古龙的《剑神一笑》。直接将文本内容整理成文档或目录,导入知识库即可。

《剑神一笑》
作者:古龙

序
剑与剑神剑,是一种武器,也是十八般兵器之一。可是,它和其他任何一种武器都不一样,我们甚至可以说,它的地位和其他任何一种武器,都有一段很大的距离。
武器最大的功用只不过是杀人攻敌而已。剑却是一种身分和尊荣的象征,帝王将相贵族名士们,都常常把剑当作一种华丽的装饰。
这一点已经可以说明剑在人们心目中的特殊地位。
更特殊的一点是,剑和儒和诗和文学也都有极密切的关系李白就是佩剑的。
他是诗仙,也是剑侠。他的剑显然不如诗。所以他仅以诗传,而不以剑名。
在中国古代,第一位以剑术留名的人,恰巧也姓李。大李将军的剑术,不但令和他同一时代的人目眩神迷,叹为现止,也令后代的人对他的剑法产生出无穷的幻想。
可是真正第一个把"剑"和"神"这两个字连在一起说的人,却是草圣张旭。
张旭也是唐诗人,在李肇的《国史补》中有一段记载。
旭言:我始闻公主与担夫争路,而得笔法之意;后见公孙氏舞剑器而得其神。
有人说剑器并不是一种剑,而是一种舞。也有人说剑器是一种系彩带的短剑,是晋唐时,女子用来作舞器的。可是也有人说它是一种武器。
关于这些,金庸先生和我在书信中论过,连博学多闻如金庸先生,也不能做一个确切的结论。远在晋唐间,这一类的事,如今大都已不可考,各家有各家之说,其说不可定。
我们只能说,如果剑器也是剑的一种,那么,公孙大娘无疑是被人称作"剑神"的第一人。
这或者也是"神剑"这两个字的由来。
剑神与剑仙能够被人称为剑神的人,除了他的剑术已经出神入化之外,还要有一些必要的条件。
那就是他的人格和人品。
因为剑在武器中地位是独特而超然的,是不同于凡俗的。所以,一个人如果能被人称为剑神,那么他的人品和人格也一定要高出大多数人很多。
能够达到这种条件的人就当然不会多了,每隔三、五百年,也不过只有三、五人而已。
就算在被别人视为最荒诞不经的武侠小说中,这种人都不太多。在比较严谨一点的作品里,这种人更少之又少。
因为"剑神"是和"剑仙"不同的,在武侠小说中剑仙就比较多得多了。
尤其是在当年"还珠楼主"、"平江不肖生"甚至在"朱贞木"的武侠小说中,都时常会有很多剑仙出现,都能以气御剑,御剑杀人于千里之外。
只不过他们都不是剑神。
因为他们都缺少一股气,一股傲气。
总觉得要作为一位剑神,这股傲气是绝对不可缺少的,就凭着这股傲气,他们甚至可以把自己的生命视如草芥。
因为他们早已把自己的生命奉献给他们所热爱的道。
他们的道就是剑。
他们既不求仙也不求佛,人世间的成败名利,更不值他们一顾,更不值他们一笑。
他们要的只是他们那一剑挥出时的尊荣与荣耀,在他们来说那一瞬间就已是永恒。
为了达到这一瞬间的颠峰,他们甚至可以不惜牺牲一在武侠小说的世界中,有几个人够资格被称为剑神。
我不敢妄自菲薄,我总认为西门吹雪可以算是其中的一个剑神之笑西门吹雪也是一个有血有泪有笑的人,也有人的各种情感,只不过他从来不把这种情感表达出来而已。
他可以单骑远赴千里之外,去和一个绝顶的高手,争生死于瞬息之间,只不过是为了要替一个他素不相识的人去复仇伸冤。
可是如果他认为这件事不值得去做,就算是他在这个世界上唯一的朋友,陆小凤去求他,他也不去。
他甚至还有一点幽默感。
有一次,他心里明明顾意去替陆小凤做一件事,可是偏偏还要陆小凤先剃掉那两条不像胡子却像眉毛的胡子。
总而言之,这个人是绝对令人无法揣度,也无法思阿。
这个人的剑平生从未败过要练成这种不败的剑法,当然要经过别人所无法想象艰苦锻练。要养成这种孤高的品格,当然也要经过一段别无法想象的艰苦历程。
往事的辛酸血泪困苦艰难,他从未向别人提起过,别当然不会知道。
可是每个人都知道一件事,西门吹雪从来不笑。
一个有血肉情感的人,怎么会从来不笑?难道他真的来没有笑过?
我不相信。
至少我就知道他曾经笑过一次,在一件非常奇妙的事中,一种非常特殊的情况下,他就曾经笑过一次。
我一直希望能够把这次奇妙的事件写出来,因为我相无论任何人看到这件事之后,也都会像西门吹雪一样,忍住要笑一笑。
能够让大家都笑一笑,大概就是我写作的两大目的之。
赚钱当然是我另外的一大目的。

相关下载