上期用PHP调通了AI对话。但AI不知道你的私有数据。今天上 Laravel AI SDK 的 RAG——让AI基于你的文档回答问题。
一句话说清原理:
把文档切成小块,用向量数据库存起来。用户提问时,先检索相关片段,再和问题一起发给AI。
相当于AI一边翻你的资料,一边回答问题。
三个步骤,跑通RAG:
1. 安装SDK
bashcomposer require laravel/aiphp artisan vendor:publish --provider="Laravel\Ai\AiServiceProvider"php artisan migrate
2. 准备文档并生成向量
需要 PostgreSQL + pgvector 扩展。假设你有张 documents 表,有 content 和 embedding(向量列):
phpuse Illuminate\Support\Str;$doc = Document::find(1);$embedding = Str::of($doc->content)->toEmbeddings();$doc->embedding = $embedding->toArray();$doc->save();
3. 创建Agent并开启相似度搜索
phpuse App\Models\Document;use Laravel\Ai\Tools\SimilaritySearch;classKnowledgeAgentextendsAgent{ public function instructions(): string { return "你是一个客服助手,仅根据检索到的文档回答问题。"; } public function tools(): iterable { return [ SimilaritySearch::usingModel(Document::class, 'embedding') ->withDescription('搜索知识库中的相关文档'), ]; }}
4. 使用Agent回答问题
php$agent = new KnowledgeAgent();$response = $agent->prompt('你们的售后服务流程是什么?');echo $response->text;
Agent会调用相似度搜索工具,从向量数据库里找到最相关的文档片段,连同用户问题一起发给大模型。
注:以上代码基于 Laravel 13 / AI SDK v0.3。如果你的 Laravel 版本较低,建议先升级。
ThinkPHP用户看这里:
topthink/think-ai 目前主要提供聊天、图像、语音等基础AI接口,RAG中的向量嵌入和检索功能还未内置。不过官方有向量相关的路线图,可以保持关注。想快速体验RAG的话,建议先用本文的 Laravel 方案跑通,原理和流程适用于任何框架。
下期预告: 给Agent加“工具”——让它查数据库、搜网页,解决更复杂的问题。想看的点个赞或留言告诉我。
有问题评论区问,老杨挨个回。