deep-searcher: 打造定制化深度搜索工具

前戏 今天我们用 DeepSearcher 体验下 Deep Research 的强大功能。 🌟 Deep-Searcher https://github.com/zilliztech/deep-searcher.git DeepSearcher 是一个开源的深度搜索工具, 旨在通过结合强大的语言模型(如 OpenAI、DeepSeek 等)和向量数据库, 在私有数据上进行高效搜索、评估和推理, 提供高精度的答案和综合报告。 🚀 功能特点 🔍 私有数据搜索:最大化利用企业内部数据, 同时确保数据安全。必要时可整合在线内容以提供更准确的答案。 📊 向量数据库管理:支持 Milvus 等向量数据库, 允许数据分区以提高检索效率。 🎨 灵活的嵌入选项:兼容多种嵌入模型, 可选择最优方案。 🌐 多语言模型支持:支持多种大型语言模型(LLM), 如 DeepSeek、OpenAI、Anthropic Claude、Google Gemini 等。 📄 文档加载器:支持本地文件加载(如 PDF、TXT 等), 并正在开发网页爬取功能。 🔗 RESTful API 接口:提供 API 接口, 方便与其他系统集成。 架构设计和代码结构 架构图如下: 代码结构分析: 📖 快速开始 准备 下载代码, 创建 Python 虚拟环境(推荐 Python 版本 >= 3.10) : git clone https://github.com/zilliztech/deep-searcher.git cd deep-searcher python3 -m venv .venv source .venv/bin/activate pip install -e . 快速使用 部署 filecrawl [可选] https://github.com/mendableai/firecrawl ...

二月 27, 2025 · 3 分钟 · 464 字 · zhu733756

从 RAG 到 Deep Research: 大模型又出大招?

前戏 随着人工智能技术的飞速发展, 大语言模型(LLM)逐渐成为研究和应用的热点。从最初的检索增强生成(RAG)技术到如今的深度研究(Deep Research), LLM 技术经历了多次重要的迭代与演进。本文将带您一探究竟, 回顾这一技术的发展历程。 RAG 技术的兴起与发展 RAG 的起源与原理 检索增强生成(Retrieval-Augmented Generation, RAG)技术最早于 2021 年被提出。 RAG 的核心思想, 是通过检索外部知识库中的相关信息, 增强语言模型的生成能力。RAG 技术的出现, 为 LLM 的发展奠定了重要的基础, 一定程度上解决了大模型由于私域知识不足, 往往胡编乱造的现象。 RAG 的范式演变 最初, RAG 主要被用于 LLM 的预训练阶段, 随后逐渐扩展到微调与推理任务。 2024 年, RAG 技术出现了多种新的范式: Naive RAG: 最基础的检索增强生成方法, 直接将检索到的信息与模型输入结合。 Advanced RAG: 引入更复杂的检索策略和生成机制, 提升模型性能。 Modular RAG: 将 RAG 系统模块化, 使其更灵活地适应不同任务。 Graph RAG: 融合知识图谱, 进一步增强模型对知识的结构化理解和推理能力。 Agentic RAG: 作为最新的范式, Agentic RAG 通过集成自主 AI 代理, 实现了动态管理检索策略、迭代细化上下文理解, 并适应性地调整工作流程。 LLM 技术的快速迭代 模型架构的创新 随着 RAG 技术的不断发展, LLM 本身也在架构上进行了多次创新。例如, DeepSeek-V3 采用了基于 MoE(Mixture of Experts)架构的设计, 总参数量达到 671B。这种架构通过激活部分参数, 既提升了模型性能, 又降低了计算成本。此外, DeepSeek-V3 还引入了无辅助损失的负载均衡策略和多 token 预测训练目标, 进一步优化了模型的训练效率。 ...

二月 24, 2025 · 2 分钟 · 294 字 · zhu733756

smolagents+ollama: 打造高度定制化可联网的私域agent

前戏 今天我们聊聊使用 smolagents + ollama 打造本地私域可联网 agent 🌟 项目简介 https://github.com/huggingface/smolagents smolagents 是一个轻量级库, 用于构建强大的代理(agents)。它允许用户通过几行代码运行功能强大的代理,支持多种语言模型(LLM)和工具。代理可以通过编写 Python 代码来调用工具并协调其他代理,非常适合快速开发和部署智能代理系统。 🚀 功能特点 极简设计:代理的核心逻辑仅约 1000 行代码,保持最小化的抽象层。 支持代码代理 CodeAgent :通过代码执行动作,支持在沙盒环境中运行以确保安全性 集成 Hugging Face Hub:支持从 Hub 共享和拉取工具。 模型无关性:支持任何 LLM。 多模态支持:支持文本、视觉、视频甚至音频输入。 工具无关性:支持 LangChain、Anthropic 的 MCP 等工具,甚至可以将 Hub Space 作为工具使用。 🛠️ 部署使用指南 📦 安装 通过 pip 安装 smolagents: pip install smolagents 友情提示: 本地的 python 版本要求>=3.10 你可以参考这个方式进行升级: sudo add-apt-repository ppa:deadsnakes/ppa sudo apt update sudo apt install python3.10 python3.10 --version # Python 3.10 默认可能不带 pip,需要手动安装: sudo apt install python3.10-distutils curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3.10 get-pip.py # 配置python3.10 为python3默认版本 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1 sudo update-alternatives --config python3 🌐 支持的模型和工具 HfApiModel:支持 Hugging Face Hub 上的模型。 LiteLLMModel:通过 LiteLLM 集成访问 100+ LLM。 OpenAIServerModel:支持 OpenAI 兼容的服务器。 TransformersModel:支持本地 transformers 模型。 AzureOpenAIServerModel:支持 Azure 上的 OpenAI 模型。 📟 CLI 工具 smolagents 提供了两个 CLI 命令:smolagent 和 webagent。 ...

二月 19, 2025 · 4 分钟 · 748 字 · zhu733756

离线大模型联网的N个插件尝试

前戏 今天我们一起看下几个大模型联网插件, 让你的离线大模型打通实时联网能力任督二脉。 架构介绍 一个典型的 RAG 流程图如下: 在这个流程中有一个联网查询过程, 插件通过调用实时爬虫将搜索到的文档丢给大模型, 然后总结输出回答。 离线大模型部署 https://ollama.com/ 联网插件哪家强? Page Assist Page Assist 是一款专为开发者设计的开源浏览器扩展工具,旨在通过简单的配置和操作,让用户直接调用本地或离线运行的大模型。它支持多种主流浏览器(如 Chrome、Edge、Firefox 等),并提供了丰富的插件功能,帮助用户实现跨网页交互、文档解析、搜索管理等功能。 本文使用 Edge 浏览器演示, 毕竟不用使用魔法就能安装。 安装以后, 我们在右上角的配置设置选择语言模式为中文, 然后配置本地的 ollama 地址: 接着配置联网插件, 这里我们使用百度。 问下大模型 page assist 是什么? Open WebUI https://github.com/open-webui/open-webui 功能特点 🎉 无缝安装:支持通过 Docker 或 Kubernetes(kubectl、kustomize 或 helm)进行安装,支持 :ollama 和 :cuda 标签的镜像。 🔗 Ollama/OpenAI API 集成:无缝集成 OpenAI 兼容 API,支持与 LMStudio、GroqCloud、Mistral、OpenRouter 等更多服务的连接。 🛡️ 细粒度权限与用户组:管理员可以创建详细的用户角色和权限,确保安全的用户环境。 📱 响应式设计:支持桌面、笔记本和移动设备。 📱 进阶 Web 应用(PWA):支持移动端的离线访问,提供类似原生应用的体验。 ...

二月 18, 2025 · 2 分钟 · 291 字 · zhu733756

OneAPI: 大模型接口管理和分发系统

前戏 今天我们聊聊大模型接口管理和分发系统 OneApi, 并使用 ollama 对接大模型 deepseek-r1:7b。 🌟 项目简介 https://github.com/songquanpeng/one-api One API 是一个开源的 OpenAI 接口管理和分发系统,支持多种大模型,包括 Azure、Anthropic Claude、Google PaLM 2 & Gemini、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元。该项目旨在通过标准的 OpenAI API 格式访问所有的大模型,开箱即用。 📚 架构设计 oneapi的架构图比较简单: 用户使用key访问oneapi的接口时,根据用户的身份和权限,调用对应的model模块进行模型调用。 🚀 功能特点 https://github.com/songquanpeng/one-api?tab=readme-ov-file#%E5%8A%9F%E8%83%BD 支持多种大模型, 这里不一一列举了。 支持令牌管理 支持配额和兑换码管理 支持额度和用户激励 支持用户管理, 支持飞书、github、微信授权登录 … 🛠️ 部署指南 基于 Docker 进行部署 官方推荐: # 使用 SQLite 的部署命令: $ docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api # 使用 MySQL 的部署命令: $ docker run --name one-api -d --restart always -p 3000:3000 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api 由于 latest 当前没有 arm64 架构的镜像, 本人使用正式版部署: ...

二月 13, 2025 · 2 分钟 · 354 字 · zhu733756

使用 Milvus 构建图片搜索引擎

前戏 在当今数字化时代,图片数据呈爆炸式增长,如何从海量图片中快速准确地找到相似图片成为了一个重要问题。Milvus 作为一个高性能的向量数据库,为解决这一问题提供了强大的支持。本文将详细介绍如何使用 Milvus 构建一个图片搜索引擎,让你能够轻松地在图片海洋中找到“知音”。 Milvus 简介 Milvus 是专为处理海量向量数据而设计的数据库,它构建在 Faiss、HNSW、DiskANN、SCANN 等流行的向量搜索库之上,能够高效地在包含数百万、数十亿甚至数万亿向量的数据集上进行相似性搜索。Milvus 支持数据分片、流式数据摄取、动态 Schema、结合向量和标量数据的搜索等多种高级功能,采用共享存储架构,计算节点具有存储和计算分解及横向扩展能力,非常适合用于构建图片搜索引擎。 图片搜索引擎架构 https://github.com/milvus-io/bootcamp/blob/master/applications/image/reverse_image_search/README.md 上面的例子使用 towhee 通过 ResNet50 提取图像特征,并使用 Milvus 构建了一个可以执行反向图像搜索的系统。 Towhee 由四大模块构成:算子、流水线、数据处理 API 和执行引擎。 算子是基础组件,可为神经网络模型、数据处理方法或 Python 函数。流水线由多个算子组成,形成有向无环图,实现复杂功能如特征提取等。数据处理 API 提供多种数据转换接口,用于构建数据处理管道,处理非结构化数据。执行引擎负责流水线实例化、任务调度、资源管理及性能优化,有轻量级本地引擎和高性能的 Nvidia Triton 引擎。 系统架构如下: 数据源 https://drive.google.com/file/d/1n_370-5Stk4t0uDV1QqvYkcvyV8rbw0O/view?usp=sharing 环境准备 安装 Milvus 你可以选择在本地安装 Milvus Lite,也可以在 Docker 或 Kubernetes 上部署高性能的 Milvus 服务器。可以参考这篇文章。 服务部署 https://github.com/milvus-io/bootcamp/blob/master/applications/image/reverse_image_search/docker-compose.yaml 这个 docker-compose.yaml 文件是一个用于部署Milvus 和相关组件的配置文件。主要包括: etcd minio milvus-standalone mysql webserver webclient 我们可以把它缩减成这样: mysql webserver webclient 详见: https://github.com/zhu733756/cloud-database-tools/blob/master/milvus/img-search/docker/docker-compose.yaml 需要修改这几个参数: environment: MILVUS_HOST: '172.18.0.4' MILVUS_PORT: '30774' MYSQL_HOST: '172.16.238.11' 配置 Milvus 这个 CR 为 NodePort: ...

一月 13, 2025 · 2 分钟 · 394 字 · zhu733756

快速尝鲜! k8s部署向量数据库milvus实用指南

前戏 过去两年 AI 大火, 向量数据库 milvus 赋能 RAG 向量搜索加速, 这玩意怎么在 k8s 上部署? milvus Milvus 构建在 Faiss、HNSW、DiskANN、SCANN 等流行的向量搜索库之上, 专为在包含数百万、数十亿甚至数万亿向量的密集向量数据集上进行相似性搜索而设计。 支持数据分片、流式数据摄取、动态Schema、结合向量和标量数据的搜索、多向量和混合搜索、稀疏向量和其他许多高级功能。 采用共享存储架构, 其计算节点具有存储和计算分解及横向扩展能力。 官方建议使用 Kubernetes 部署 Milvus。 创建集群 本文使用 kind 来部署 k8s 集群。 下载 kind 和 helm 此处省略细节, 具体可参考前文。 一行命令, 创建一个集群 准备配置文件: kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraPortMappings: - containerPort: 31000 # 将主机 31000 端口映射到容器的 31000 端口 hostPort: 31000 listenAddress: '0.0.0.0' # Optional, defaults to "0.0.0.0" protocol: tcp # Optional, defaults to tcp - role: worker - role: worker - role: worker kubeadmConfigPatches: - | apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration metadata: name: config networking: serviceSubnet: 10.0.0.0/16 imageRepository: registry.aliyuncs.com/google_containers nodeRegistration: kubeletExtraArgs: pod-infra-container-image: registry.aliyuncs.com/google_containers/pause:3.1 - | apiVersion: kubeadm.k8s.io/v1beta3 kind: InitConfiguration metadata: name: config networking: serviceSubnet: 10.0.0.0/16 imageRepository: registry.aliyuncs.com/google_containers 用以上配置文件, 执行集群创建命令, 可以得到一个 4 节点的集群: ...

一月 6, 2025 · 6 分钟 · 1206 字 · zhu733756

什么是大模型RAG检索、增强、生成? 专有名词一次性讲完!

前戏 前文, 我们使用ollama离线部署了一个qwen-5b模型, 今天我们对RAG一些名词进行系统解释, 白话文解释, 再也不用懵逼了。 RAG是Retrieval-Augmented Generation的缩写, 中文意思是检索增强生成, 顾名思义, 没啥争议。 举个不恰当的例子, 想象你在写一篇关于小狗的文章, 但你对小狗的知识有限。RAG就像你使用搜索引擎查找关于小狗的信息, 然后将这些信息作为参考资料,来帮助你写出更全面的文章。至于增强的过程, 就是你通过整理这些参考资料, 去掉一些没用的, 甚至可能还会返回去图书馆找资料, 只为了给你的读者具象化地讲解, 最好是图文并茂。至于生成, 就是把检索增强后的文档丢给大模型, 然后由大模型回答问题。 除了这三个大概念外, 其实还有些预处理过程, 也是必不可少的优化手段。 我们按照顺序一一厘清, 尽可能覆盖所有的细节。 预处理 预处理是指用户输入和知识库构建的过程。可能涉及到的一些步骤如下。 数据清理 数据清理是RAG中一个重要的步骤, 它包括对原始数据进行预处理, 包括文本清理、实体识别、实体链接等。 分块 在 RAG 系统中, “分块”(Chunking)是指将长文本或文档分割成更小、更易于管理和处理的片段或块的过程。分块有利于提高检索效率, 改善上下文管理, 增强检索相关性。 以下是分块的一些优化手段: 固定大小分块(Fixed-size Chunking): 将文档分割成等长的块, 每个块包含固定数量的单词或字符。 结构化分块(Structured Chunking):根据文档的结构(如段落、标题、句子)来分割文档。 上下文丰富的分块(Context-rich Chunking):在分块时, 保留一些额外的上下文信息, 以便每个块都能提供足够的信息。确定合适的重叠量, 以便在块之间保持上下文的连贯性。 语义分块(Semantic Chunking): 基于文本的语义内容来分割文档, 确保每个块包含相关的概念或主题。使用 NLP 技术(如主题建模)来识别和分割语义上连贯的段落。 多模态分块(Multimodal Chunking)对于包含多种类型内容(文本、图像、视频)的文档, 采用适合不同模态的分块策略。为每种内容类型定制分块方法, 以保留各自的语义信息。 … 知识库构建 知识库是RAG的核心, 它包含所有与用户需求相关的信息, 如文档、问题、实体等。 实体识别和链接: 在文本中识别出实体(如人名、地点、组织等), 并将它们与知识库中的相应条目链接起来。 知识提取: 从文本中提取结构化信息, 如事实、关系和概念, 并将它们存储在知识库中。 知识表示和存储: 选择合适的数据模型来表示知识, 如语义网络、图数据库、向量数据库等。 索引构建: 为知识库中的数据构建索引, 以加快检索速度。 检索分类器 确定哪些请求是否要走检索, 大模型的知识储备是否已经足够。如果已经足够, 直接跳过检索, 避免频繁的检索导致性能下降。 ...

十二月 30, 2024 · 3 分钟 · 491 字 · zhu733756

源码走读: fasthttp 为什么这么快?

前戏 今天我们聊聊 golang 的 web 框架, fasthttp 和 gin 到底谁更丝滑? fasthttp 简介 安装 go get -u github.com/valyala/fasthttp fasthttp 性能吊打 net/http 简而言之,fasthttp服务器的速度比net/http快多达 10 倍, 具体参数可以查看官网https://github.com/valyala/fasthttp fasthttp 使用方式与 net/http 有所差异 // using the given handler. func ListenAndServe(addr string, handler RequestHandler) error { s := &Server{ Handler: handler, } return s.ListenAndServe(addr) } type RequestHandler func(ctx *RequestCtx) 可以这样使用: type MyHandler struct { foobar string } // request handler in net/http style, i.e. method bound to MyHandler struct. func (h *MyHandler) HandleFastHTTP(ctx *fasthttp.RequestCtx) { // notice that we may access MyHandler properties here - see h.foobar. fmt.Fprintf(ctx, "Hello, world! Requested path is %q. Foobar is %q", ctx.Path(), h.foobar) } // pass bound struct method to fasthttp myHandler := &MyHandler{ foobar: "foobar", } fasthttp.ListenAndServe(":8080", myHandler.HandleFastHTTP) 在多个handler的时候需要这样使用: ...

十二月 27, 2024 · 5 分钟 · 1000 字 · zhu733756

Ollama离线部署大模型: Qwen下载与ModelFile命令速成手册!

前戏 今天我们聊聊大模型离线部署,用Ollama怎么部署Qwen模型。 Ollama Ollama是一个开源的 AI 模型服务, 旨在简化大型语言模型本地部署和运行过程的工具, 允许用户在无需 Internet 连接的情况下使用本地模型。 简化部署 一行命令跑起大模型: ollama run llama3.2 当然, 运行前先保证ollama serve已经启动。环境变量配置 OLLAMA_HOST设置后端的地址。 简明的命令行风格 ollama --help Large language model runner Usage: ollama [flags] ollama [command] Available Commands: serve Start ollama create Create a model from a Modelfile show Show information for a model run Run a model stop Stop a running model pull Pull a model from a registry push Push a model to a registry list List models ps List running models cp Copy a model rm Remove a model help Help about any command Flags: -h, --help help for ollama -v, --version Show version information Use "ollama [command] --help" for more information about a command. 模型导入与定制 ModelFile 这是一个类似DockeFile的哲学设计,通过ModelFile可以快速构建一个模型镜像,然后通过ollama run 命令直接跑起一个模型: ...

十二月 25, 2024 · 4 分钟 · 749 字 · zhu733756