Ollama + AnythingLLM +Weaviate 架构搭建 DeepSeek 知识库
前言随着人工智能技能的快速发展,构建智能化的知识库系统成为了提升业务效率、加快信息流转的重要途径。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 + AnythingLLM +Weaviate 架构搭建 DeepSeek 知识库.assets/image-20250205102935114.png)
部署Ollama
配置科学上网情况(无魔法网络必须配置)
[*] • **代理IP:**10.10.10.50
[*] • **代理端口:**1081
[*] • **代理协议:**socks5
# 如果有代理ip,运行如下命令配置科学上网 export ALL_PROXY="socks5h://10.10.10.50:1081" # 开启Socks5代理 # 关闭Socks5代理 unset ALL_PROXY
安装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"
https://i-blog.csdnimg.cn/img_convert/c074f3476872b2f3a6517d99929b9394.png
重启Ollama服务
# 重新加载服务配置 sudo systemctl daemon-reload # 重启服务 sudo systemctl restart ollama.service
验证配置是否乐成
# 本地访问ollama sudo curl -I anythingllm.hbgslz.cn:11434
模型安装(非科学上网情况下载更快)
安装教程:https://ollama.com/library/deepseek-r1
# 以1.5b安装为例,拉取并安装某个模型,“deepseek r1:1.5b”是模型名称,根据需要更改. sudo ollama run deepseek-r1:1.5b
!(./Ollama + AnythingLLM +Weaviate 架构搭建 DeepSeek 知识库.assets/image-20250205134036716.png)
安装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 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 能够精确地调理和运行容器。
https://i-blog.csdnimg.cn/direct/9c2e1f751128463e8246795f98c09c26.jpeg#pic_center
验证安装
# 查看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版本的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
配置防火墙
最终防火墙只须要开通SSL的端口443,SSH端口依据现实情况看是否须要开通
# 开启防火墙 sudo ufw --force enable # 开启anythingllm的3001端口 sudo ufw allow 3001/tcp # 查看端口开通情况 sudo ufw status
总结
通过Ollama、AnythingLLM和Weaviate的有机结合,DeepSeek知识库架构不但提升了知识管理的智能化水平,还有效优化了信息检索的速度和精确性。Ollama为架构提供了本地化、可定制的AI推理平台,AnythingLLM加强了自然语言明白与生成的能力,而Weaviate则以其强大的向量数据库特性为系统提供了高效的查询与数据存储支持。三者的结合,为打造一个高效、智能、精准的知识库提供了强有力的技能支持,也为将来更多智能化系统的开发提供了名贵的经验与启示。
AI大模型学习福利
作为一名热心肠的互联网老兵,我决定把名贵的AI知识分享给各人。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包罗AI大模型入门学习头脑导图、佳构AI大模型学习册本手册、视频教程、实战学习等录播视频免费分享出来。
https://i-blog.csdnimg.cn/direct/9bce36dfea0e4b41882e3a947c3b2dfc.jpeg#pic_center
大模型&AI产物经理怎样学习
求各人的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。
1.学习门路图
https://i-blog.csdnimg.cn/direct/be3154acf4654dc98a65fb209ce1ebdc.png#pic_center
第一阶段: 从大模型系统设计入手,讲授大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小步伐案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
2.视频教程
网上虽然也有很多的学习资源,但根本上都残破不全的,这是我本身整理的大模型视频教程,上面门路图的每一个知识点,我都有配套的视频讲授。
https://i-blog.csdnimg.cn/direct/e14e7fcb35494ec288e3166d15504242.png
https://i-blog.csdnimg.cn/direct/3b5cef73a975451aa628552513bdd18c.png#pic_center
(都打包成一块的了,不能逐一展开,总共300多集)
因篇幅有限,仅展示部分资料,须要点击下方图片前去获取
3.技能文档和电子书
这里主要整理了大模型相干PDF册本、行业报告、文档,有几百本,都是目前行业最新的。
https://i-blog.csdnimg.cn/direct/5724c952d23b45b19096800919b0b5d0.png#pic_center
4.LLM面试题和面经合集
这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
https://i-blog.csdnimg.cn/direct/7520c542c2c84c7cb4e8f13cc1da1255.png
页:
[1]