Ollama + AnythingLLM +Weaviate 架构搭建 DeepSeek 知识库
这个文件用于设置 GRUB 引导加载器的参数,确保在系统启动时禁用 IPv6。必须先处理上面的两个配置文件,最后才配置GRUB,否则会导致无法禁用ipv6。通过Ollama、AnythingLLM和Weaviate的有机结合,DeepSeek知识库架构不仅提升了知识管理的智能化水平,还有效优化了信息检索的速度和准确性。Ollama为架构提供了本地化、可定制的AI推理平台,AnythingLLM增强
前言
随着人工智能技术的快速发展,构建智能化的知识库系统成为了提升业务效率、加速信息流转的重要途径。DeepSeek知识库旨在结合最新的AI技术,帮助企业和个人在海量信息中精准获取所需的知识。本文将介绍如何通过Ollama、AnythingLLM和Weaviate三者的结合搭建DeepSeek知识库架构,提升数据检索、智能问答以及知识管理的能力。
系统环境
-
• 操作系统版本:Ubuntu 24.04
-
• Python环境:Python3.10+
-
• 数据库版本:PostgreSQL 16
-
• 科学上网
-
• 部署架构(开源):Ollama+AnythingLLM+Weaviate
-
- • Ollama (LLM):重点是生成响应,是基于 语言模型的推理,适合进行 创造性 或 推理 的任务。
- • Weaviate (向量数据库):重点是检索相关信息,是基于 语义相似度 的搜索,适合用来查找 与查询相关的文档或数据。
系统环境准备
更新系统
更新系统# 更新系统
sudo apt -y update && sudo apt -y upgrade
修改本地时区
假设你想将时区设置为“Asia/Shanghai”,可以运行以下命令:
# 将时区设置为“Asia/Shanghai”
sudo timedatectl set-timezone Asia/Shanghai
修改主机名
# 执行以下命令后,必须重新连接才会显示主机名。
sudo hostnamectl hostname anythingllm.hbgslz.cn
安装日常常用的排错工具(可选)
日常运维经常会用到的命令,并非必须安装
# 用于日常运维
sudo apt-get -y install net-tools
关闭网卡的IPv6(可选)
- •
/etc/sysctl.conf
:用于动态设置内核参数,禁用 IPv6 功能。 - •
/etc/netplan
:用于管理网络接口的配置,确保网络接口不启用 IPv6 功能。 - •
/etc/default/grub
(最后配置):用于设置 GRUB 引导加载器参数,确保在系统启动时禁用 IPv6。
修改 sysctl
配置
编辑 /etc/sysctl.conf 文件并添加了以下内容:
# 向 /etc/sysctl.conf 文件并添加以下内容:
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
确保 sysctl
这些设置立即生效
sudo sysctl -p
修改 /etc/netplan
配置文件
这个文件用于管理网络接口的配置,确保网络接口不启用 IPv6 功能。
编辑 Netplan 配置文件
sudo vim /etc/netplan/50-cloud-init.yaml
确保配置文件中包含以下内容
network:
version: 2
ethernets:
enp0s1:
dhcp4: false # 启用IPv4
dhcp6: false # 禁止ipv6
应用更改
sudo netplan apply
修改 /etc/default/grub
文件(三个配置项目中,该配置必须在最后)
这个文件用于设置 GRUB 引导加载器的参数,确保在系统启动时禁用 IPv6。必须先处理上面的两个配置文件,最后才配置GRUB,否则会导致无法禁用ipv6。
编辑 /etc/default/grub
文件
sudo vim /etc/default/grub
添加如下禁止IPv6的配置
# 系统启动时禁用 IPv6
GRUB_CMDLINE_LINUX="ipv6.disable=1"
更新 GRUB 配置
sudo update-grub
重启系统
sudo reboot
验证 IPv6 是否禁用
# 检查是否存在ipv6的网络接口
ip -6 addr
如果没有显示任何 IPv6 地址,则表示 IPv6 已成功禁用。
安装Ollama(科学网络)
官方安装教程
- • 官方自动安装教程:https://ollama.com/download/linux
- • Linux的详细安装教程:https://github.com/ollama/ollama/blob/main/docs/linux.md
部署Ollama
安装Ollama
# 安装Ollama
sudo curl -fsSL https://ollama.com/install.sh | sh
配置以及启动Ollama服务
# 查看服务状态,默认ollama安装后自动启动,并配置了开机自动启动
sudo systemctl status ollama
校验Ollama是否安装成功
# 本地访问ollama
sudo curl -I http://127.0.0.1:11434
配置Ollama远程调用(可选)
查看Ollama服务的配置文件
# 查看服务状态,“/etc/systemd/system/ollama.service”即为服务的配置文件
sudo systemctl status ollama.service
编辑Ollama服务配置文件
# 通过上面的图片获取该文件路径
sudo vim /etc/systemd/system/ollama.service
添加OLLAMA_HOST配置参数
# Ollama监听地址
OLLAMA_HOST="0.0.0.0"
重启Ollama服务
# 重新加载服务配置
sudo systemctl daemon-reload
# 重启服务
sudo systemctl restart ollama.service
验证配置是否成功
# 本地访问ollama
sudo curl -I anythingllm.hbgslz.cn:11434
安装Ollama模型
模型选择
模型版本 | 模型大小(GB) | GPU显存(GB) | 内存(GB) | 硬盘容量(GB) | 备注 |
---|---|---|---|---|---|
1.5B | 1.1 | 4 | 8 | 5 | |
7B | 4.7 | 12 | 16 | 10 | |
8B | 4.9 | 16 | 32 | 15 | |
14B | 9 | 24 | 64 | 30 | |
32B | 20 | 48 | 128 | 60 | |
70B | 43 | 80 | 256 | 120 | |
671B(MoE) | 404 | 4x A100 GPUs(320GB VRAM) | 512 | 500 |
模型安装(非科学上网环境下载更快)
安装教程:https://ollama.com/library/deepseek-r1
# 以1.5b安装为例,拉取并安装某个模型,“deepseek r1:1.5b”是模型名称,根据需要更改.
sudo ollama run deepseek-r1:1.5b
安装Docker环境(科学网络)
更新系统
sudo apt-get update
sudo apt-get upgrade -y
安装 Docker 的依赖
# 安装一些必要的工具,以便从仓库中下载 Docker 包
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
-
• apt-transport-https
-
- • 功能:apt-transport-https 允许 APT 使用 HTTPS 协议来获取软件包。这是为了保证与 Docker 官方仓库的通信安全,因为 Docker 的官方仓库地址是通过 HTTPS 提供的。
- • 用途:它确保 apt-get 能够通过安全的 HTTPS 协议访问 Docker 仓库,从而避免潜在的中间人攻击或者不安全的通信方式。
-
• ca-certificates
-
- • 功能:ca-certificates 是一组由受信任的证书颁发机构(CA)颁发的根证书。它们用于确保通过 HTTPS 协议连接到的服务器的身份是可信的。
- • 用途:安装 ca-certificates 包可以确保 apt-get 在通过 HTTPS 协议从 Docker 仓库获取包时,验证仓库服务器的 SSL 证书,从而避免 SSL/TLS 安全连接问题。
-
• curl
-
- • 功能:curl 是一个命令行工具,用于通过 URL 进行数据传输。它支持多种协议,包括 HTTP、HTTPS、FTP、SFTP 等。
- • 用途:在 Docker 的安装过程中,curl 用来从 Docker 官方网站下载 GPG 密钥,或者从 Docker 的官网仓库下载其他所需的资源。它可以处理 HTTP/HTTPS 请求并将内容输出到终端或者指定文件。
-
• software-properties-common
-
- • 功能:software-properties-common 包含了一个用来管理 APT 软件仓库的工具集,特别是用于添加、删除或者更新软件仓库的源。
- • 用途:software-properties-common 主要用于提供 add-apt-repository 命令,这个命令允许我们轻松地将第三方软件仓库添加到系统中。在 Docker 安装过程中,我们使用 add-apt-repository 来添加 Docker 官方的 APT 仓库,确保可以从官方仓库下载 Docker 包。
添加 Docker 仓库的 GPG 密钥
# 为了验证 Docker 包的完整性,需要添加 Docker 的 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/trusted.gpg.d/docker.asc
添加 Docker 的 APT 仓库
# 添加 Docker 官方的 APT 仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
安装 Docker CE(社区版)
# 安装Docker 社区版
sudo apt-get -y install docker-ce docker-ce-cli containerd.io
-
• docker-ce
-
- • 用途:docker-ce 是 Docker 的社区版(Community Edition),它是 Docker 引擎的核心部分,提供了容器运行的基本功能。
- • 解释:这部分是 Docker 的主要组件,负责容器的创建、启动、停止、管理等。安装 docker-ce 会让你拥有 Docker 引擎来运行容器。
-
• docker-ce-cli
-
- • 用途:docker-ce-cli 是 Docker 的命令行工具,用于与 Docker 引擎进行交互。
- • 解释:你可以通过 docker 命令行工具(如 docker run,docker ps)来管理 Docker 容器、镜像、网络等。安装 docker-ce-cli 可以让你从命令行与 Docker 进行交互。
-
• containerd.io
-
- • 用途:containerd 是一个高效的容器运行时,提供容器的创建、调度、运行和监控等基本功能。
- • 解释:containerd 是 Docker 的一个底层组件,它是一个独立的容器运行时,用于管理容器的生命周期。安装 containerd.io 组件是为了确保 Docker 能够正确地调度和运行容器。
验证安装
# 查看docker版本
sudo docker --version
配置docker开机自动启动并启动Docker服务
# 配置docker开机自动启动
sudo systemctl enable docker
# 启动docker服务
sudo systemctl start docker
配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
# 创建镜像加速器目录
sudo mkdir -p /etc/docker
# 向/etc/docker/daemon.json文件中阿里云镜像加速器配置
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ix2vi854.mirror.aliyuncs.com"]
}
EOF
# 重新加载服务
sudo systemctl daemon-reload
# 重启Docker服务
sudo systemctl restart docker
非 root 用户运行 Docker(可选)
默认情况下,Docker 需要以 root 用户身份运行。如果你希望以非 root 用户运行 Docker,可以将你的用户添加到 Docker 组
# 将当前的用户添加到Docker组
sudo usermod -aG docker $USER
向量数据库安装(任一)
Weaviate(为例部署)
Weaviate 是一个开源的、基于向量的数据库,专为存储、搜索和分析大规模的非结构化数据(如文本、图像、音频等)而设计。它提供了一种高效的方式来管理和查询包含丰富信息的多模态数据,并结合机器学习和自然语言处理技术,能支持智能化的搜索与数据分析。Weaviate 支持向量化数据存储,能够高效地执行基于相似度的检索(例如:语义搜索),因此在处理大规模知识库、推荐系统和自然语言处理(NLP)任务时非常有用。
Weaviate主要特点
向量数据库
- • Weaviate 采用向量数据库的设计理念,可以将文本、图像等数据转换为向量表示,并存储在数据库中。通过这种方式,可以执行基于向量的相似度搜索,而不需要依赖传统的关键词匹配方法。
- • 向量化数据使得语义搜索成为可能:例如,可以通过输入与查询意图相似的查询文本,获得相关的结果,即便这些结果与查询词汇并不完全匹配。
内置支持机器学习模型
- • Weaviate 与多个流行的预训练机器学习模型集成,包括用于文本和图像的模型。它支持自动将数据(如文本、图像)转换为向量格式,从而能够在数据库中进行高效存储和搜索。
- • 例如,Weaviate 内置了与 OpenAI 和 Hugging Face 等模型的集成,允许用户在数据库中存储由大规模语言模型(LLM)生成的嵌入向量,从而提升检索能力。
多模态支持
- • Weaviate 支持处理多种不同类型的数据,包括文本、图像、音频等。无论是文本描述、图像内容还是音频文件,Weaviate 都能够对这些数据进行嵌入并存储为向量,便于跨模态查询和检索。
- • 比如,用户可以使用图像描述查询相关的图片,或是用语音输入查询文本内容。
基于图的模型
- • Weaviate 将数据存储在一个图数据库中,这意味着它不仅能存储实体及其向量表示,还能处理实体之间的关系。这对于构建知识图谱尤其有价值。
- • 通过图的形式,可以更加高效地表示和查询数据的关系,例如实体之间的相似度、上下文关联等。
可扩展性与分布式支持
- • Weaviate 设计上具备高可扩展性,能够在大规模数据集上运行,并支持水平扩展。通过分布式架构,Weaviate 能够处理更大的数据量,适应企业级应用需求。
- • 它还支持容器化部署,可以通过 Docker 和 Kubernetes 部署,并且能够与云平台服务集成。
灵活的查询语言
- • Weaviate 提供了一种名为 GraphQL 的查询语言,使得用户能够以声明式的方式进行复杂的数据检索。用户可以通过 GraphQL 查询接口获取存储在数据库中的向量数据和关联数据。
- • 这种查询语言简洁且易于扩展,适合大规模数据操作,特别是在需要跨多个实体类型进行查询时。
开放源码与社区支持
- • Weaviate 是一个完全开源的项目,所有代码都托管在 GitHub 上。这意味着用户可以自由地修改、扩展并根据需要进行定制。
- • Weaviate 拥有活跃的开源社区,社区成员提供了大量的插件、工具和集成,支持不同的应用场景。
Weaviate应用场景
语义搜索与推荐系统
- • 通过将数据转化为向量,Weaviate 可以为语义搜索提供支持。比如,你可以基于用户的历史查询或行为,推荐相关的文档、视频、图像等资源。语义搜索能够超越关键词匹配,理解语境和意图,提供更精准的结果。
知识图谱与推理
- • Weaviate 支持构建动态的知识图谱,可以将数据之间的关系表示为图,并进行推理分析。这对于自动化决策支持系统、智能问答系统等应用非常有价值。
情感分析与情境理解
- • 在NLP应用中,Weaviate可以处理与情感分析相关的任务,通过模型嵌入与相似度计算,可以识别文本中的情感倾向,并为相关应用提供反馈。
多模态搜索与分析
- • Weaviate 支持图像和音频等非文本数据的搜索。你可以上传图像文件并基于图像内容进行检索,或使用语音输入进行搜索并返回文本数据。
大规模文本分析
- • Weaviate 可以帮助企业或机构存储并分析大量的文档数据,应用于法律、医学、金融等领域,实现对文献或报告的深度分析和智能搜索。
Weaviate安装
创建数据存储目录
# postgresql数据存放目录
sudo mkdir -p /data/weaviate_data/weaviate_db
# web数据存放目录
sudo mkdir -p /data/weaviate_data/weaviate_web
# log数据存放目录
sudo mkdir -p /data/weaviate_data/weaviate_log
创建Docker网络
# 创建网络
sudo docker network create --driver bridge weaviate-network
# 删除网络
# sudo docker network rm weaviate-network
启动 PostgreSQL 容器(持久化存储)
sudo docker run -d \
--name weaviate-db \
--network weaviate-network \
-p 5432:5432 \
-e POSTGRES_DB=weaviate \
-e POSTGRES_USER=weaviate \
-e POSTGRES_PASSWORD=Hbgslz123. \
-v /data/weaviate_data/weaviate_db:/var/lib/postgresql/data \
--restart=always \
--health-cmd="pg_isready -U weaviate" \
--health-interval=30s \
--health-timeout=10s \
--health-retries=3 \
postgres:16
参数详解:
- • --restart=always: 确保容器在失败后会自动重启。
- • --health-cmd: 设置健康检查命令,确保 PostgreSQL 容器健康运行。
- • -v /data/weaviate_data/weaviate_db:/var/lib/postgresql/data: 使用本地路径来持久化数据库数据。
- • --health-interval, --health-timeout, --health-retries: 设置健康检查的间隔时间、超时和重试次数,确保容器能够及时恢复。
启动weaviate-web容器
- • 镜像地址:https://hub.docker.com/r/semitechnologies/weaviate/tags
# 启动weaviate容器
sudo docker run -d \
--name weaviate-web \
--network weaviate-network \
-p 8080:8080 \
-p 50051:50051 \
-e QUERY_DEFAULTS_LIMIT=100 \
-e WEAVIATE_THREAD_POOL_SIZE=8 \
-e AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=false \
-e PERSISTENCE_DATA_PATH=/var/lib/weaviate \
-e WEAVIATE_DB_HOST=weaviate-db \
-e WEAVIATE_DB_PORT=5432 \
-e WEAVIATE_DB_USER=weaviate \
-e WEAVIATE_DB_PASSWORD=Hbgslz123. \
-e WEAVIATE_CLUSTER_MODE=false \
-v /data/weaviate_data/weaviate_web:/var/lib/weaviate \
-v /data/weaviate_data/weaviate_log:/var/log/weaviate \
--restart=always \
--memory=4g \
--cpus=1 \
semitechnologies/weaviate
参数详解:
- • -e QUERY_DEFAULTS_LIMIT=100: 增加默认查询返回的最大结果数,适用于高负载环境。
- • -e WEAVIATE_THREAD_POOL_SIZE=8: 设置 Weaviate 线程池的大小为 8,适合高并发请求。
- • -e AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=false: 禁用匿名访问,确保只有授权用户才能访问。
- • -e PERSISTENCE_DATA_PATH=/var/lib/weaviate: 定义数据存储路径。
- • -v /data/weaviate_data/weaviate_web:/var/lib/weaviate: 将数据持久化到本地存储,避免容器停止后数据丢失。
- • /data/weaviate_data/weaviate_log:/var/log/weaviate: 将日志文件持久化到本地,方便监控和排查问题。
- • --memory=4g: 限制容器使用 4GB 的内存,防止资源耗尽。
- • --cpus=1: 设置容器最大可用 CPU 核心数为 1,确保资源分配合理。
- • --health-cmd: 配置容器健康检查,确保 Weaviate 容器正常运行。
验证容器间的连接
登录到 weaviate-web 容器
# 注意最后的“/bin/ash”,而不是“/bin/bash”
sudo docker exec -it weaviate-web /bin/ash
安装 psql
客户端
apk add postgresql-client
登录到 PostgreSQL 数据库
# 登录到 PostgreSQL 数据库
psql -h weaviate-db -U weaviate -d weaviate
Chroma
Chroma 是一个开源的向量数据库,专为高效存储和查询嵌入向量(embedding vectors)设计,支持通过向量相似度搜索快速查找相关数据。与 Weaviate 类似,Chroma 主要用于实现语义搜索、推荐系统和知识图谱的应用。Chroma 在设计上注重易用性和高效性,能够处理大规模的向量数据,并提供灵活的接口与强大的性能优化。
Chroma主要特点
向量存储与检索
- • Chroma 通过将文本、图像等非结构化数据转换为向量嵌入并存储这些向量,支持基于相似度的检索。比如,Chroma 可以接收一个文本查询,查询结果不仅包括包含查询关键词的文本,还能包括语义上相关的文本,即使这些文本与查询词没有直接的词汇匹配。
- • 通过这种方式,Chroma 能够有效地支持自然语言处理任务,尤其是当数据集较大时,基于向量的检索可以显著提高搜索质量和效率。
灵活的向量搜索引擎
- • Chroma 提供多种相似度搜索算法,支持基于距离度量(如欧几里得距离、余弦相似度等)的高效向量检索。这使得它在执行语义搜索、图像检索或其他相似度度量任务时具有很高的性能。
- • 支持批量操作,可以同时处理大量向量的存储和查询请求,适合大规模应用。
集成深度学习模型
- • Chroma 允许与流行的深度学习框架(如 TensorFlow、PyTorch)以及预训练的模型(例如 GPT、BERT、CLIP 等)进行无缝集成。你可以使用这些模型将文本、图像或其他数据转化为向量,然后存储到数据库中。
- • 它特别适用于处理基于大规模语言模型(LLM)的任务,如语义理解、推荐系统、问答系统等。
高性能与可扩展性
- • Chroma 提供了优化的向量存储和检索算法,能够在大规模数据集上实现快速查询,适合大数据量应用。它通过高效的数据结构(如倒排索引、哈希表等)和并行化技术,提高了存储和查询的速度。
- • 支持分布式部署,可以横向扩展,处理更大规模的数据集和查询请求,适合企业级的应用需求。
支持多种数据类型
- • Chroma 支持存储多种类型的数据,如文本、图片、音频等,并为这些数据生成嵌入向量。比如,用户可以上传图像文件,使用图像嵌入模型将图像转化为向量并存储,之后基于图像向量进行查询。
- • 这种多模态支持,使得 Chroma 能够在不同的应用场景中提供灵活的解决方案,支持图像-文本、音频-文本等跨模态搜索任务。
简单易用的 API 和集成
- • Chroma 提供了简单易用的 Python API,支持快速集成和开发。其设计目标之一是简化开发者的工作,使得即便没有深厚的机器学习背景,也能方便地使用向量搜索功能。
- • Chroma 还可以通过 RESTful API 与其他系统进行集成,方便与现有的应用架构进行协同工作。
开源与社区支持
- • Chroma 是一个完全开源的项目,所有源代码都托管在 GitHub 上,开发者可以自由使用、修改和贡献代码。
- • Chroma 的开源性质意味着它具有一个活跃的社区,社区成员提供了多种插件、工具和集成,帮助加速项目开发和应用推广。
Chroma主要应用场景
语义搜索
- • Chroma 的最大应用场景之一是语义搜索。通过将文本数据转换为向量表示,它能够理解查询的语义,并返回与查询意图最相关的结果,而不仅仅是基于关键词的匹配。这对于文本检索、FAQ 系统、智能问答等非常有用。
推荐系统
- • 在推荐系统中,Chroma 能够基于用户的历史行为、偏好或查询内容,推荐相关的商品、内容、电影等。基于向量的相似度匹配可以提供更为精准的推荐结果,超越传统的基于规则或关键词的推荐方法。
图像与文本检索
- • Chroma 可以用于图像和文本的跨模态检索。比如,用户上传一张图片,系统可以根据图片内容查询相关的文本或其他图片;或者用户输入一段文本,系统返回与文本描述相关的图片。
知识图谱与智能决策
- • Chroma 可以帮助构建知识图谱,提供基于向量的相似度计算和推理能力。在智能决策系统中,Chroma 可用于存储和查询知识库,帮助系统做出更加智能的决策。
多模态数据分析
- • Chroma 支持处理多种类型的数据,可以用来分析跨模态的数据。例如,通过分析文本和图像的关系,或者结合图像和音频数据,进行多维度的数据分析和处理。
AI 驱动的 NLP 任务
- • Chroma 支持在自然语言处理任务中应用,如情感分析、命名实体识别、文档分类等。通过将文本数据转化为嵌入向量并进行聚类或相似度检索,Chroma 能够在各种 NLP 任务中提供支持。
Chroma安装
创建数据存储目录
# 创建数据存储目录
sudo mkdir -p /data/chromadb_data
启动容器
# 启动Chroma容器
sudo docker run -d \
--name chromadb \
-p 8000:8000 \
-v /data/chromadb_data:/chroma/chroma \
-e IS_PERSISTENT=TRUE \
-e ANONYMIZED_TELEMETRY=TRUE \
--restart unless-stopped \
chromadb/chroma
Qdrant
Qdrant 是一个高效的、开源的向量数据库,专门为存储和检索嵌入向量(embedding vectors)而设计。它支持多种相似度搜索任务,包括语义搜索、推荐系统、图像检索等,尤其在处理大规模非结构化数据时表现优异。Qdrant 通过向量化存储和高效的相似度计算,帮助开发者构建更智能的搜索引擎和推荐系统。Qdrant 的设计不仅关注向量检索,还强调对大数据集的高效处理,具备良好的可扩展性和可用性,适用于构建企业级的应用和生产环境。
Qdrant主要特点
向量存储与高效检索
- • Qdrant 采用向量存储技术,可以将文本、图像等非结构化数据转换为高维向量,并将这些向量存储在数据库中。用户可以通过基于相似度的查询方式,从大规模数据集中快速获取与查询相关的项,而无需依赖传统的关键词匹配方法。
- • 支持多种距离度量(如欧几里得距离、余弦相似度等)来进行向量的相似度计算,满足不同的应用需求。
支持高维向量
- • Qdrant 特别适合处理高维向量数据。许多 NLP 或计算机视觉模型输出的嵌入向量通常都是高维的,Qdrant 在这方面表现出色,能够高效地存储和查询这些高维向量。
- • 高维向量存储和检索的效率是 Qdrant 的核心优势之一,支持大规模数据集的处理和快速响应。
高性能和低延迟
- • Qdrant 使用先进的索引技术,如 HNSW(Hierarchical Navigable Small World)算法,来加速向量检索过程。该算法优化了高维数据的检索速度,大大提高了系统的响应速度,尤其在大规模数据集上表现优秀。
- • Qdrant 优化了批量插入和查询操作,支持高吞吐量的数据处理和低延迟的查询响应,适合实时应用场景。
强大的灵活性与可扩展性
- • Qdrant 支持水平扩展,可以通过增加节点来处理更大的数据集和更高的查询负载。它支持分布式架构,能够扩展到多个节点以提高数据存储和处理能力。
- • Qdrant 支持多种部署方式,可以在云环境、裸机或容器化平台上部署,适应不同的基础架构需求。
集成机器学习与深度学习模型
- • Qdrant 支持与流行的机器学习和深度学习框架(如 TensorFlow、PyTorch)集成,可以与预训练模型(例如 BERT、CLIP 等)结合使用,生成数据的嵌入向量并存储在 Qdrant 中。
- • 这种集成能力使得 Qdrant 能够与现代 NLP 和计算机视觉应用无缝结合,广泛应用于语义搜索、图像检索等任务。
易用的 RESTful API 和客户端
- • Qdrant 提供了简洁、直观的 RESTful API,开发者可以通过简单的 HTTP 请求来进行向量的插入、检索和删除操作。这使得 Qdrant 非常易于与其他应用和服务集成。
- • 除了 REST API 外,Qdrant 还提供了官方的客户端库,支持多种编程语言(如 Python、Go、Java等),方便开发者在不同环境中使用。
过滤与多样的查询能力
- • Qdrant 允许用户在查询时使用过滤条件,以便在检索相似度最高的向量时,进一步缩小范围。这在推荐系统、广告投放和个性化内容推荐中非常有用。
- • Qdrant 支持丰富的查询类型,包括基于相似度的查询、范围查询、范围筛选等,用户可以灵活地指定查询需求。
开源与社区支持
- • Qdrant 是一个开源项目,所有源代码托管在 GitHub 上。它享有活跃的开发社区,用户可以自由使用、修改和扩展其功能。
- • 社区提供了丰富的文档、示例和支持,开发者可以轻松上手并在需要时寻求帮助。
Qdrant主要应用场景
语义搜索
- • Qdrant 在语义搜索应用中表现尤为突出。通过将文本或其他数据转化为向量,Qdrant 能够基于语义相似度进行搜索,而不仅仅是基于关键词匹配。这使得它非常适合用于智能问答系统、FAQ 系统、文档检索等场景。
推荐系统
- • 在个性化推荐系统中,Qdrant 可以通过计算用户行为和内容之间的相似度来推荐相关的产品、内容或服务。它可以存储并查询用户的嵌入向量和商品、文章等的向量,提供个性化的推荐结果。
图像检索
- • Qdrant 可以用于图像的向量化存储和检索。例如,通过使用预训练的图像嵌入模型(如 CLIP),可以将图像转化为向量并存储在 Qdrant 中,用户可以通过查询图像内容相似的向量来实现图像检索。
多模态数据分析
- • Qdrant 支持多种类型的向量(文本、图像、音频等),因此可以用于处理跨模态的数据检索。例如,通过将图像和相关文本都转换为向量并存储在同一数据库中,可以实现基于图像描述的图像检索,或是跨模态查询。
自然语言处理(NLP)应用
- • Qdrant 在 NLP 领域的应用非常广泛,可以用于情感分析、实体识别、文本分类等任务。通过将文本转化为向量进行处理,Qdrant 可以支持多种 NLP 任务中的数据存储和检索需求。
知识图谱与关系检索
- • Qdrant 可用于构建和查询知识图谱。通过对实体和关系的嵌入向量化,Qdrant 可以帮助管理和查询复杂的知识库,从而为智能决策提供支持。
Qdrant安装
安装教程:https://qdrant.tech/documentation/guides/installation/
创建数据存储目录
# 创建数据存储目录
sudo mkdir -p /data/qdrant_data
启动容器
# 启动qdrant容器
sudo docker run -d \
--name qdrantdb \
--restart=always \
-p 6333:6333 \
-p 6334:6334 \
-v /data/qdrant_data:/qdrant/storage/ \
qdrant/qdrant
Vespa
Vespa 是一个开源的、面向大规模数据的搜索引擎和推荐引擎,旨在支持高效的全文搜索、推荐、数据分析和机器学习任务。它提供了强大的实时搜索、向量搜索和多模态查询能力,广泛应用于各种搜索引擎、推荐系统、广告投放、自然语言处理(NLP)和大数据分析等场景。Vespa 由雅虎(Yahoo)开发,并且是一个高性能、可扩展的系统,支持大规模数据集的实时处理和查询。
主要特点
全文搜索与排名
- • Vespa 提供强大的文本搜索功能,支持传统的基于关键词的搜索,也支持更复杂的排名和过滤。它能够处理各种类型的文本数据,包括文档、网页、日志等,支持倒排索引、排序、分面过滤等功能。
- • 支持精确的全文检索,能够对多个字段进行灵活的匹配和排名,适合构建高效的搜索引擎。
向量搜索
- • Vespa 支持向量存储和基于向量的相似度搜索。它能够将文本、图像等数据转换为向量嵌入,并根据这些向量进行相似度检索。用户可以通过输入一个查询向量来找到与之语义最相似的结果。
- • 这使得 Vespa 非常适用于基于语义的搜索任务,特别是在推荐系统、个性化广告和 NLP 等应用中。
高性能与低延迟
- • Vespa 设计上专注于高性能,能够在大规模数据集上执行快速查询。它通过优化的索引结构、分布式架构以及并行化查询处理,能够以低延迟的方式处理海量数据。
- • 支持分布式部署,能够横向扩展,适应大数据量的查询请求,确保系统在高并发、高吞吐量的环境下保持高效。
实时数据更新
- • Vespa 支持实时数据索引和查询,适用于需要即时响应的应用场景。无论是文档更新、用户行为记录还是产品库存变动,Vespa 都能立即处理并更新索引,确保用户查询到的是最新的数据。
- • 实时更新使得 Vespa 在动态内容推荐、广告投放、社交媒体分析等场景中尤为有效。
支持机器学习与模型集成
- • Vespa 能够集成机器学习模型并在查询时使用。通过将机器学习模型(如深度学习、排名模型等)嵌入到搜索流程中,Vespa 可以为每个查询动态计算和优化排名。
- • 例如,Vespa 可以根据用户的查询内容,结合用户历史行为、设备信息等多维度特征,通过机器学习模型调整搜索结果的顺序或推荐的内容。
多模态搜索和多字段支持
- • 除了文本数据,Vespa 还支持处理和查询图像、音频、视频等多模态数据。它可以将不同类型的数据(如图像嵌入、文本描述等)转化为向量,并支持跨模态的搜索任务。
- • 例如,用户可以上传一张图片,系统返回与该图片内容相关的文本、视频或其他图片。
灵活的查询语言
- • Vespa 提供了丰富的查询语言,支持基于文本、向量、数值等不同类型数据的多样化查询。用户可以通过标准的 RESTful API 提交复杂的查询请求,也可以结合自定义评分函数来进行排名和过滤。
- • 支持各种类型的查询操作,包括模糊搜索、范围查询、布尔查询等,以及结合多种数据类型的复杂查询。
集成与可扩展性
- • Vespa 提供了易于集成的 API 和客户端库,支持与其他系统(如 Web 应用、推荐系统、数据库等)进行无缝对接。它具有高度的可扩展性,可以根据需要部署到多个节点,支持大规模分布式部署。
- • 支持容器化部署,能够通过 Docker 和 Kubernetes 进行容器化管理和部署,适应云平台和容器化环境。
开源与社区支持
- • Vespa 是一个开源项目,代码托管在 GitHub 上。它拥有活跃的开发社区,用户可以自由使用、修改和扩展其功能。社区成员提供了丰富的文档、示例和集成方案,帮助开发者快速上手并进行应用开发。
主要应用场景
搜索引擎
- • Vespa 最基本的应用场景是作为一个高效的搜索引擎,适用于各种搜索任务,如网页搜索、文档搜索、产品搜索等。它不仅支持传统的基于关键词的全文搜索,还支持基于向量的语义搜索。
推荐系统
- • Vespa 的向量搜索功能非常适合用于构建个性化推荐系统。它能够根据用户的历史行为、偏好以及其他上下文信息,推荐相关的商品、文章、视频等内容。
- • 通过机器学习模型的集成,Vespa 可以动态优化推荐的内容,以提高推荐的准确性和用户体验。
广告投放与个性化广告
- • 在广告投放中,Vespa 可以根据用户的兴趣、行为和上下文信息,通过实时搜索和推荐算法提供个性化的广告内容。这对于广告定向、提高广告点击率和转化率至关重要。
- • 通过向量搜索和机器学习模型,Vespa 能够分析用户的实时行为和意图,并在广告投放中做出更精确的调整。
图像和多模态检索
- • Vespa 支持图像数据的嵌入向量存储和搜索,可以用于图像的相似性检索。比如,用户上传一张图像,系统能够返回与该图像内容相似的其他图像或相关文本。
- • 同时,Vespa 也支持多模态数据(文本、图像、音频等)的检索,可以实现跨模态的查询任务,例如基于图像搜索相关的文本信息,或者基于文本描述搜索相关的图像。
自然语言处理(NLP)
- • Vespa 支持与自然语言处理(NLP)模型的集成,可以用于情感分析、实体识别、文本分类等任务。通过将模型嵌入到 Vespa 中,NLP 任务的查询能够通过机器学习模型进行动态优化。
- • 例如,在智能问答系统中,Vespa 可以通过向量搜索获取与用户查询相关的答案,并根据查询上下文进行优化。
大数据分析与实时数据处理
- • Vespa 适合用于大数据分析和实时数据处理任务,能够在大量数据中进行高效的查询、分析和过滤。它支持实时更新数据并立即响应查询,适合需要实时数据处理的场景,如社交媒体分析、日志分析等。
Vespa安装
创建数据存储目录
# 创建数据存储目录
sudo mkdir -p /data/vespa_data
对存数据存储目录授权
# 对存数据存储目录授权
sudo chown -R 1000:1000 /data/vespa_data
sudo chmod -R 755 /data/vespa_data
启动容器
# 启动vespa容器
sudo docker run -d \
--name vespadb \
--restart=always \
-p 8080:8080 \
-v /data/vespa_data:/opt/vespa/var \
vespaengine/vespa
部署AnythingLLM
官方教程:https://docs.anythingllm.com/installation-desktop/overview#docker-vs-desktop-version
版本对比
- • 企业用户推荐Docker版本
Feature | Available on Desktop | Available on Docker |
---|---|---|
Multi-user support | ❌ | ✅ |
Emeddable chat widgets | ❌ | ✅ |
One-click install | ✅ | ❌ |
Private documents | ✅ | ✅ |
Connect to any vector database | ✅ | ✅ |
Use any LLM | ✅ | ✅ |
Built-in embedding provider | ✅ | ✅ |
Built-in LLM provider | ✅ | ❌ |
White-labeling | ❌ | ✅ |
Chat logs | ✅ | ✅ |
Agent support | ✅ | ✅ |
Agent skills | ✅ | ✅ |
Third-party data connectors | ✅ | ✅ |
Password protection | ❌ | ✅ |
Invite new users to instance | ❌ | ✅ |
Text splitting configuration | ✅ | ✅ |
Whisper model support | ✅ | ✅ |
Full developer API | ✅ | ✅ |
User management | ❌ | ✅ |
Workspace access management | ❌ | ✅ |
Website scraping | ✅ | ✅ |
Docker版本的anythingllm安装
- • 官方教程:https://docs.anythingllm.com/installation-docker/local-docker
# 设置存储位置
export STORAGE_LOCATION=$HOME/anythingllm
# 创建存储目录
mkdir -p "$STORAGE_LOCATION"
# 创建 .env 文件
touch "$STORAGE_LOCATION/.env"
# 授权
sudo chmod -R 777 "$STORAGE_LOCATION"
# 运行 Docker 容器
sudo docker run -d -p 3001:3001 \
--restart=always \
--name anythingllm \
--network weaviate-network \
--cap-add SYS_ADMIN \
-v "$STORAGE_LOCATION":/app/server/storage \
-v "$STORAGE_LOCATION/.env":/app/server/.env \
-e STORAGE_DIR="/app/server/storage" \
-e WEAVIATE_URL=http://weaviate-web:8080 \
mintplexlabs/anythingllm
总结
通过Ollama、AnythingLLM和Weaviate的有机结合,DeepSeek知识库架构不仅提升了知识管理的智能化水平,还有效优化了信息检索的速度和准确性。Ollama为架构提供了本地化、可定制的AI推理平台,AnythingLLM增强了自然语言理解与生成的能力,而Weaviate则以其强大的向量数据库特性为系统提供了高效的查询与数据存储支持。三者的结合,为打造一个高效、智能、精准的知识库提供了强有力的技术支持,也为未来更多智能化系统的开发提供了宝贵的经验与启示。
如何学习AI大模型?
大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?
”“谁的饭碗又将不保了?
”等问题热议不断。
不如成为「掌握AI工具的技术人」
,毕竟AI时代,谁先尝试,谁就能占得先机!
想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。
但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高
那么我作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,希望可以帮助到更多学习大模型的人!至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
👉 福利来袭
CSDN大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈
全套AGI大模型学习大纲+路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉 福利来袭
CSDN大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。
更多推荐
所有评论(0)