拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Perplexity宣称“任意算力最佳”:AI搜索如何用RAG和优化打破算力迷信?

最近 AI 搜索赛道非常热闹Perplexity 一直是绕不开的名字。它的 CEO 在公开场合多次强调Perplexity 搜索在任意算力水平下均为最佳。这句话听起来很提气但冷静下来想它其实抛出了一个比“谁家搜索更聪明”更深的问题AI 搜索的质量到底是不是只由算力堆出来的如果只把它当成一句营销口号那就错过了背后的技术逻辑。这篇文章我想从算力、模型效率、RAG 架构、端侧部署这些角度把这句话拆开来看。适合正在做 AI 应用落地、想搞清楚“我到底需要多大算力”的后端开发者也适合刚开始接触大模型应用和 AI 搜索的新手。读完你至少能明白三件事算力在 AI 搜索中扮演什么角色为什么“算力越大越好”不一定成立。Perplexity 这类 AI 搜索产品为什么可以声称“低算力也能跑得很好”。如果你自己要做一个 AI 搜索或 RAG 应用该如何根据算力水平设计方案。先说明一下本文不涉及 Perplexity 内部未公开的技术细节也不会编造它的模型参数或训练数据。所有分析都基于公开技术常识和行业通用做法重点讲清楚“为什么这类产品可以做到高效”以及“你在自己的项目里能怎么借鉴”。1. 背景与核心概念1.1 为什么“算力”会成为 AI 搜索的焦点过去两年大模型的参数规模一路膨胀从百亿到千亿再到万亿“算力”这个词也从一个硬件术语变成了大众词汇。很多人下意识觉得模型越大、算力越强AI 就越聪明。这个直觉在通用对话场景里有一定道理但放到 AI 搜索这个具体场景里情况要复杂得多。AI 搜索的本质不是让模型“凭记忆回答”而是让模型“基于检索到的内容回答问题”。它的核心链路是用户输入 Query → 检索候选文档 → 对候选内容进行排序与筛选 → 大模型基于筛选结果生成答案 → 返回带引用的回答这条链路里大模型确实需要算力但真正决定回答质量的往往是检索质量、排序策略和上下文组织方式。换句话说算力只是 AI 搜索的一个环节不是全部。这也就是 Perplexity 敢说“任意算力水平下均为最佳”的底气所在只要检索和排序做得足够好中等规模的模型也能在特定场景下给出高质量回答。1.2 什么是 PerplexityPerplexity 是一个以“答案引擎”为定位的 AI 搜索产品。它和传统搜索引擎的区别在于传统搜索返回一屏链接用户需要自己点开、阅读、总结Perplexity 直接基于检索到的网页内容生成一段带有引用的回答。它的核心特点包括回答附带引用来源用户可以直接溯源。支持追问、多轮对话搜索与对话融合。强调答案的实时性搜索时实时抓取最新网页内容。产品层面同时提供免费版和付费版不同版本对应不同模型能力。从产品形态上看Perplexity 更像“GPT 搜索引擎”的结合体而不是单纯的“聊天机器人”或“搜索框”。1.3 什么是算力算力Computing Power在大模型语境下通常指完成深度学习计算任务的能力。衡量的维度很多峰值算力如 TOPSTera Operations Per Second每秒万亿次操作、TFLOPS每秒万亿次浮点运算。有效算力实际运行模型时能达到的吞吐量受显存、带宽、框架优化水平影响。推理算力 vs 训练算力训练需要大规模 GPU 集群推理则可以在单卡甚至端侧设备上完成。对于 AI 搜索这类偏推理的应用更关键的不是“能跑多大的训练集群”而是“每次用户请求要消耗多少算力、花多少钱、多快返回”。这也是为什么 Perplexity 强调“任意算力水平下均为最佳”——它要表达的是自己不是靠无脑大模型硬撑而是通过系统工程手段把每一个 token 的性价比做到最优。1.4 容易混淆的概念区分在讨论这个题目时有几个概念经常被混在一起概念含义在 AI 搜索中的作用训练算力训练或微调模型所需的 GPU 资源决定模型能力的上限推理算力模型每回答一次请求消耗的资源决定服务成本和响应速度模型参数量模型内部的权重数量影响模型能力但不等于质量上下文窗口模型一次能处理的 token 数量影响能塞入多少检索内容检索增强生成(RAG)先检索外部知识再交给模型生成用检索效率换生成算力理解这些区别之后再回看“任意算力水平下均为最佳”这句话就会发现它其实是在说通过架构设计和工程优化Perplexity 希望在从高端 GPU 到普通消费级设备的算力区间内都能提供高质量搜索体验。2. 环境准备与版本说明如果想动手验证本文中的思路推荐先准备一个基础的 Python 环境。由于 AI 搜索涉及检索、向量化、模型推理多个环节我们不限定具体框架版本重点展示工程思路。2.1 基础环境建议环境项建议配置操作系统Linux / macOS / WindowsWSL2均可Python3.9 或更高版本向量数据库可选如 Chroma、Milvus、Qdrant、FAISS嵌入模型任选一个开源向量模型例如 BGE、E5 系列大模型底座任选支持 OpenAI API 格式的服务或本地部署 Qwen、Llama 等开发工具Jupyter Notebook 或 VS Code需要说明的是这里不指定具体版本是因为生态更新很快。文章后续的代码示例重点是演示流程运行前请根据你实际安装的版本微调接口参数。2.2 安装依赖核心依赖包括pip install openai pip install faiss-cpu pip install chromadb pip install sentence-transformers如果你的运行环境没有 GPU完全不影响本文的验证。小规模示例用 CPU 就能跑通这也恰好呼应了文章主题AI 搜索并不一定需要极高算力。2.3 示例项目结构为了后续演示方便我们按下面的结构组织代码ai-search-demo/ ├── config.py # 配置文件集中管理模型地址、key、数据库路径 ├── vector_store.py # 向量库操作封装 ├── retriever.py # 检索模块 ├── generator.py # 生成模块 ├── pipeline.py # 串联整个搜索流程 └── test_data.txt # 测试用文本数据下面开始逐模块实现。3. 核心原理拆解为什么 AI 搜索能“低算力高表现”3.1 检索增强生成RAG是核心大模型有一个天然缺陷知识有截止日期训练一次成本极高无法实时更新。AI 搜索如果只靠模型记忆回答不仅过时还会出现“一本正经地胡说八道”。RAG 的方案是把“知识获取”从模型内部搬到模型外部用户提问后先从文档库或互联网检索相关片段。把检索到的片段拼接到 prompt 中。模型基于片段内容生成回答。这样做有一个直接好处模型不需要记住所有知识只需要“阅读理解”检索回来的内容。任务难度下降了模型规模就可以适当减小算力需求也随之降低。3.2 为什么小模型也能做好“搜索总结”传统观念里模型越大越聪明。但在 RAG 场景下模型的工作重心是“基于给定材料回答问题”而不是“回忆知识”。这个任务更考验模型的指令跟随能力和上下文理解能力而不是知识储备量。举个例子如果问“2025 年某款手机的发布时间”模型本身不需要知道答案它只需要从检索结果中提取日期。这种任务指令微调到位的小模型完全可以胜任。Perplexity 的聪明之处就在于它把搜索这个产品从“拼模型记忆”变成了“拼检索质量 拼总结能力”。后者对算力的消耗天然更低。3.3 模型侧的效率优化手段除了 RAG 架构还有一组模型侧优化手段让 AI 搜索在低算力下也能保持表现蒸馏Distillation用一个大模型作为教师训练一个小模型作为学生让学生学习教师的输出模式。小模型在推理时消耗的算力远低于大模型但在特定任务上能接近大模型的效果。量化Quantization把模型权重从 FP16 压缩到 INT8 甚至 INT4牺牲少量精度换取数倍算力下降。在搜索总结这类容错较高的任务里量化后的模型表现通常依然可用。稀疏激活 / 混合专家MoEMoEMixture of Experts混合专家模型让每次推理只激活一部分专家网络计算量远小于相同参数量的密集模型。Perplexity 在部分场景被外界猜测使用了类似思路但具体细节属于未公开信息这里只做通用技术说明。缓存Caching搜索场景中热门问题会被反复询问。对相似 Query 的结果做语义缓存可以跳过检索和生成直接返回之前的结果。这是大幅度降低平均算力消耗的关键手段之一。下面这张对照表可以更直观地理解不同优化手段的作用优化手段解决的问题适合场景RAG知识过时、模型记忆不足所有知识密集问答指令微调提升小模型特定任务能力摘要、提炼、格式转换量化降低推理显存和延迟端侧、低配 GPU蒸馏用大模型“教”小模型任务垂直化缓存减少重复计算高频问题、重复 Query4. 完整实战案例搭建一个轻量 AI 搜索流程为了验证“中等算力也能搭建可用的 AI 搜索”我们实现一个不依赖大型 GPU 的 RAG 搜索服务。整个流程在普通开发机上即可运行。4.1 准备测试数据先创建一个测试文本文件test_data.txt内容可以是任意领域的说明文字。为了便于验证效果这里用一段简短的“公司产品介绍”示例TechAI 是一家专注于企业级 AI 搜索解决方案的科技公司。 成立于 2019 年总部位于深圳。 核心产品是 Kairos Search支持多模态检索和私有化部署。 Kairos Search 采用 RAG 架构内置向量检索和重排序模块 可在不依赖大型 GPU 的情况下提供精准的企业知识库问答。4.2 编写配置文件config.py用于统一管理模型接入参数# 文件路径ai-search-demo/config.py import os # 如果你使用本地部署的模型可以把 base_url 指向本地服务 # 如果你使用云厂商模型把 api_key 设置为你的密钥 OPENAI_BASE_URL os.getenv(OPENAI_BASE_URL, http://localhost:8000/v1) OPENAI_API_KEY os.getenv(OPENAI_API_KEY, your-api-key) EMBEDDING_MODEL os.getenv(EMBEDDING_MODEL, BAAI/bge-small-zh-v1.5) GENERATE_MODEL os.getenv(GENERATE_MODEL, qwen2.5-7b-instruct) TOP_K 3这里把模型地址、Key、模型名全部抽离到环境变量方便替换不同算力环境下的模型服务。比如你本地是 4090 单卡可以直接跑 7B 模型如果只有 CPU 或者低配显卡可以换成 1.5B 或 3B 模型。4.3 实现向量存储模块向量存储用于把测试文档切分、嵌入并保存索引。# 文件路径ai-search-demo/vector_store.py from sentence_transformers import SentenceTransformer import numpy as np import json import os class VectorStore: def __init__(self, model_name, persist_pathindex.json): print(f加载嵌入模型: {model_name}) self.model SentenceTransformer(model_name) self.persist_path persist_path self.documents [] self.embeddings None def add_documents(self, docs): 将文档列表转为向量并保存。 self.documents docs self.embeddings self.model.encode(docs) self._persist() def search(self, query, top_k3): 检索与 query 最相似的文档片段。 query_vec self.model.encode([query]) # 这里用简单的余弦相似度 scores np.dot(self.embeddings, query_vec.T).squeeze() top_indices np.argsort(scores)[-top_k:][::-1] results [(self.documents[i], float(scores[i])) for i in top_indices] return results def _persist(self): data { documents: self.documents, embeddings: self.embeddings.tolist() } with open(self.persist_path, w, encodingutf-8) as f: json.dump(data, f, ensure_asciiFalse) print(f索引已保存到 {self.persist_path}) def load(self): if os.path.exists(self.persist_path): with open(self.persist_path, r, encodingutf-8) as f: data json.load(f) self.documents data[documents] self.embeddings np.array(data[embeddings]) return True return False这里使用了sentence-transformers工具库它可以自动下载指定的嵌入模型。首次运行时需要联网下载权重之后可以离线使用。如果网络条件有限也可以换成更小的向量模型比如paraphrase-multilingual-MiniLM-L12-v2。4.4 实现检索与生成模块检索模块负责调用向量库# 文件路径ai-search-demo/retriever.py from vector_store import VectorStore class Retriever: def __init__(self, vector_store): self.vector_store vector_store def retrieve(self, query, top_k3): return self.vector_store.search(query, top_ktop_k)生成模块负责把检索结果交给大模型总结# 文件路径ai-search-demo/generator.py from openai import OpenAI class Generator: def __init__(self, base_url, api_key, model): self.client OpenAI(base_urlbase_url, api_keyapi_key) self.model model def generate(self, query, contexts): context_text \n\n.join( [f片段{i1}:\n{doc} for i, (doc, score) in enumerate(contexts)] ) prompt f你是一个专业的搜索助手。请根据下面提供的检索片段回答用户问题。 如果片段中没有足够信息请直接说明无法回答不要编造。 ### 用户问题 {query} ### 检索片段 {context_text} ### 回答要求 1. 答案必须基于检索片段 2. 在答案末尾用 [来源1][来源2] 标注对应片段 3. 回答控制在 200 字以内 请开始回答 response self.client.chat.completions.create( modelself.model, messages[ {role: system, content: 你是一个严谨的搜索助手。}, {role: user, content: prompt} ], temperature0.3, max_tokens500 ) return response.choices[0].message.content注意 prompt 的设计。这里突出三点要求模型“基于片段回答”避免幻觉。要求模型输出引用来源这是 AI 搜索产品形态的核心。限制回答长度降低生成阶段的 token 开销也就是降低推理算力消耗。4.5 串联完整流程# 文件路径ai-search-demo/pipeline.py from config import OPENAI_BASE_URL, OPENAI_API_KEY, EMBEDDING_MODEL, GENERATE_MODEL, TOP_K from vector_store import VectorStore from retriever import Retriever from generator import Generator def load_test_docs(pathtest_data.txt): with open(path, r, encodingutf-8) as f: content f.read() # 简单按句子拆分真实项目中需要更细粒度的切块 sentences [s.strip() for s in content.split(。) if s.strip()] return sentences def main(): docs load_test_docs() vector_store VectorStore(EMBEDDING_MODEL) if not vector_store.load(): vector_store.add_documents(docs) retriever Retriever(vector_store) generator Generator(OPENAI_BASE_URL, OPENAI_API_KEY, GENERATE_MODEL) while True: query input(请输入问题输入 exit 退出).strip() if query.lower() exit: break contexts retriever.retrieve(query, top_kTOP_K) print(\n 检索到的上下文 ) for doc, score in contexts: print(fscore{score:.4f} | {doc}) answer generator.generate(query, contexts) print(\n 生成回答 ) print(answer) print() if __name__ __main__: main()4.6 运行与验证启动本地模型服务后执行cd ai-search-demo python pipeline.py输入示例问题请输入问题输入 exit 退出Kairos Search 是什么预期输出类似 检索到的上下文 score0.7142 | 核心产品是 Kairos Search支持多模态检索和私有化部署 score0.6238 | TechAI 是一家专注于企业级 AI 搜索解决方案的科技公司 score0.5011 | 可在不依赖大型 GPU 的情况下提供精准的企业知识库问答 生成回答 根据检索结果Kairos Search 是 TechAI 推出的企业级 AI 搜索产品支持多模态检索和私有化部署并且采用 RAG 架构可在不依赖大型 GPU 的情况下提供企业知识库问答。[来源1][来源3]这个例子完整演示了“中等算力甚至低算力也能搭建可用 AI 搜索”的核心链路。你完全可以把它替换成自己的文档库再接入不同的向量模型和生成模型观察效果变化。5. 常见问题与排查思路在实际搭建过程中开发者最常遇到的问题集中在依赖、嵌入模型和 prompt 效果三方面。问题现象常见原因解决思路下载嵌入模型超时网络不稳定或模型文件较大手动下载权重后放到本地目录使用SentenceTransformer(model_path)指定本地路径向量维度不一致存储时和查询时用了不同的嵌入模型统一官方模型名称检查持久化文件是否重新生成回答内容与检索片段不符prompt 指令不够强模型自由发挥在 prompt 里强调“只能基于片段回答”提高温度值改为 0.2 以下检索结果相关度低文本切块粒度过大或过小调整切块长度比如按 200-500 字符切块并设置重叠overlap本地模型推理速度慢模型参数过大CPU 推理换更小模型开启量化或者改用云端 API生成引用编号错乱模型没有理解片段编号规则在 prompt 中显式展示编号规则并给一个简短示例如果你使用的是 GPU 服务器还需要关注显存占用。可以通过以下命令查看nvidia-smi重点关注每个进程的显存使用量。如果出现CUDA out of memory错误优先考虑换更小的模型。使用 4-bit 量化加载。减小max_tokens或批量大小。核心排查顺序是先确认数据源和切块是否正确再确认检索返回的 top_k 结果是否符合预期最后再优化生成模型和 prompt。多数“回答不准”的问题根源并不在模型而在检索环节。6. 算力规划与最佳实践6.1 如何估算你的 AI 搜索算力需求很多开发者一上来就问“我应该买几张 A100”这是典型的“训练思维”误用到“推理场景”。AI 搜索服务的算力需求应当按下面公式估算单次请求算力消耗 ≈ 嵌入模型计算量 向量检索计算量 生成模型计算量生成模型计算量是主要成本它近似正比于输入 token 数和输出 token 数总和。如果你平均每请求输入 2000 token、输出 300 token模型服务每秒可以处理 800 token那么单请求耗时大约为(2000 300) / 800 ≈ 2.9 秒假设单机最大并发 8 个请求QPS 约为8 / 2.9 ≈ 2.7 QPS注意这只是一个粗略估算实际还要考虑显存带宽、系统调度、数据库 IO 等。但这个估算方式能帮你快速判断“我现在的算力撑不撑得住预期流量。”如果目标 QPS 是 100而当前算力只能支撑 2.7那么加显卡的性价比远不如优化这三个方向降低输入 token检索结果不要一股脑全塞进去要做重排序只保留真正相关的 2-3 段。增加缓存对重复问题直接命中缓存跳过生成阶段。模型蒸馏蒸馏一个小模型专门做摘要比用大模型便宜一个数量级。6.2 AI 搜索产品的最佳实践清单结合 Perplexity 的公开产品形态和行业通用做法做 AI 搜索时下面这些经验值得优先采纳检索质量优先于模型大小如果你只能在“更好的检索”和“更大的模型”之间选一个优先提升检索。检索不到正确材料再大的模型也只能瞎编。引用溯源一定要做AI 搜索的生命力在于可信。回答必须提供来源。来源的作用不仅是让用户验证更重要的是约束模型让它知道“这段回答是有依据的”幻觉概率会明显下降。输入压缩是降本利器检索回来的 10 个片段往往只有 2 个真正有用。先用一个轻量排序模型reranker做重排序再把 top 2-3 片段拼进 prompt。输入 token 少了推理时间和成本直接下降。缓存策略要分级常见问题的缓存可以设长一点敏感问题的缓存要谨慎。如果数据经常更新缓存时间必须短甚至关闭缓存。日志与评测体系不能省上线 AI 搜索最怕“感觉挺好但说不清哪里好”。建议一开始就记录每条 query 的检索命中数、答案长度、用户点击行为定期做人工评测。评测集建议包含常见的简单问题、需要多步推理的复杂问题、以及容易引发幻觉的对抗性问题。6.3 不同算力水平下的方案选型算力水平代表环境推荐方案关键技术极低算力普通 CPU 笔记本小模型 向量检索1-3B 量化模型BM25 召回中等算力单张消费级 GPU如 RTX 4070 等 8-16G 显存7B 模型 RAG4-bit 量化重排序较高算力单张专业级 GPUA100 等 40-80G 显存中大型模型 完整 RAG长上下文复杂检索策略云端弹性算力Kubernetes 集群 多卡推理服务化 自动扩缩容负载均衡推理框架优化需要注意这里的显卡型号仅作示例重点不是具体型号而是显存和算力档位。实际选型时要结合你的预算、并发量和数据规模综合判断。7. 总结与学习路线回到文章标题Perplexity CEO 说“Perplexity 搜索在任意算力水平下均为最佳”。这句话背后其实是 AI 搜索产品的一个核心趋势搜索产品不应当靠堆算力取胜而应当靠系统架构取胜。通过本文你可以系统地理解以下内容AI 搜索的本质是“检索 生成”算力只是其中一个环节。RAG 是 AI 搜索的基石它让中小模型也能胜任高质量问答。通过蒸馏、量化、缓存、重排序等手段可以在低算力环境下显著提升搜索效果。搭建一个轻量 AI 搜索 Demo 不需要昂贵显卡CPU 加中等模型即可起步。上线 AI 搜索时检索质量、引用溯源、输入压缩、日志评测比单纯加卡更重要。如果你想继续深入学习建议按下面路线走学习文本切块策略尝试不同切块大小和重叠率观察检索效果变化。学习重排序Rerank在召回后加一层交叉编码器排序理解为什么它能提升最终答案准确率。学习向量数据库选型从 FAISS 单机索引出发再尝试 Milvus、Qdrant 等分布式方案。尝试模型本地部署用 llama.cpp、vLLM、Ollama 在本地跑一个小模型感受真实推理延迟。搭建完整评测集为自己写一份包含 20-50 条问题的评测集量化不同模型和检索策略的差异。最后给一个实用建议如果你的业务对搜索准确性要求很高别急着采购昂贵 GPU 集群。先用一个开源向量库 7B 量化模型 一套好的 Prompt 做原型跑通之后再决定要不要升级算力。很多时候你会发现搜索产品的瓶颈根本不在于算力而在于数据和检索质量。把这两件事做好用更少的算力就能给出一份不输大模型的搜索体验。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门