本地大模型编程实战(34)使用faiss实现语义检索

FAISS(Facebook AI Similarity Search)是 Facebook AI 研究院开发的一款高效的向量相似性搜索库,专门用于优化大规模高维向量的近邻搜索任务,广泛应用于语义检索、图像检索、推荐系统等场景。 本文将详细介绍如何使用 FAISS 实现语义检索。具体内容包括: 将内容矢量化并保存为索引 在保存索引的同时,保存每条信息的相关信息metadata 通过矢量库进行语义检索 语义检索是一种基于内容含义(语义)而非表面关键词的信息检索技术,核心目标是让计算机 “理解” 用户查询的真实意图,从而返回含义相关的结果,而非仅匹配字面关键词的内容。 传统检索(如早期搜索引擎)依赖关键词匹配,例如用户搜索 “如何缓解头痛”,仅会返回包含 “缓解”“头痛” 等字面词汇的内容,若某篇文章写 “应对偏头痛的方法”(未出现 “缓解”“头痛”),则会被遗漏。 语义检索则通过语义嵌入(Embedding) 技术解决这一问题: 将文本转化为 “语义向量”:用 AI 模型(如 BERT、BGE-M3 等)把用户的查询、待检索的文档(句子 / 段落)都转化为高维向量(类似 “数字指纹”),向量的相似度直接对应内容语义的相似度。 通过向量相似度匹配结果:计算 “查询向量” 与 “文档向量” 的相似度(如余弦相似度),排序后返回相似度最高的内容,实现 “含义相关即匹配”。 ...

九月 5, 2025 · 3 分钟 · 火云

本地大模型编程实战(33)用SSE实现大模型的流式输出

SSE(Server-Sent Events)是一种基于 HTTP 协议的服务器向客户端单向推送数据的技术,允许服务器主动向已建立连接的客户端持续发送事件流(如实时通知、更新数据等),无需客户端频繁轮询。 核心特点:基于 HTTP 长连接,单向通信(仅服务器→客户端),数据以 “事件” 格式传输(包含事件类型、数据体等结构化信息),天然支持断线重连。 典型场景:大语言模型(LLM)客户端、股票行情实时更新、新闻推送、系统通知等只需服务器主动下发数据的场景。 它与websocket的主要区别是: 若场景仅需 “服务器推数据给客户端”(单向),优先选 SSE(实现简单、基于 HTTP 无额外协议成本) 若需 “客户端与服务器实时双向通信”(如聊天、互动),必须选 WebSocket(全双工能力是核心优势) 下面我们使用大语言模型qwen3实现翻译功能。它可以自动识别源语言,就可以翻译为目标语种。 像千问这种大模型是基于多语言训练的,所以它支持中文、英文、法文、西班牙等多个语种的翻译。 这是实现的效果: ...

九月 1, 2025 · 2 分钟 · 火云

本地大模型编程实战(32)用websocket显示大模型的流式输出

在与 LLM(大语言模型) 对话时,如果每次都等 LLM 处理完毕再返回给客户端,会显得比较卡顿,不友好。如何能够像主流的AI平台那样:可以一点一点吐出字符呢? 本文将模仿后端流式输出文字,前端一块一块的显示文字。主要的实现路径是: LLM 采用 qwen3 ,使用 stream 方式输出 后端使用 langchain 框架 使用 fastapi 实现后端接口 前后端之间使用 websocket 长连接通信 前端使用一个简单的 html5 网页做演示 下面是最终实现的效果: ...

四月 27, 2025 · 2 分钟 · 火云

本地大模型编程实战(31)用Map-Reduce从大文本中提取摘要

在执行从文本中提取摘要的任务时,难免遇到大文本的情况:文本的长度超出了 LLM(大语言模型) 的token限制。 LangGraph 提供了 map-reduce 工作流,它先把大文本拆成小文档分别提取摘要,然后再提炼/压缩提取的摘要,直到最后提取的摘要的token长度满足既定要求。 本次演练使用 qwen2.5:7b 开源大模型。 ...

四月 26, 2025 · 3 分钟 · 火云

本地大模型编程实战(30)从文本提取摘要

本文将演练如何使用 LLM(大语言模型) 提取文本摘要。 本次演练使用 qwen2.5:7b 开源大模型。 ...

四月 25, 2025 · 1 分钟 · 火云