当前位置: 首页 > news >正文

完整教程:用 PHP 玩向量数据库:一个从小说网站开始的小尝试

完整教程:用 PHP 玩向量数据库:一个从小说网站开始的小尝试

有时候折腾东西的起因特别随意。比如我这次,就是从一个“带点颜色”的小说网站开始的。网站里全是几万字的短文,看着还不错,但限制也不少:每天只能看几篇,而且没有任何搜索功能。

于是我写了个爬虫,把所有小说都抓了下来。数据一下子堆到本地,看似自由了,但新的麻烦随之而来——几万篇文章放在那里,如果想找某个题材、某种情节,几乎不可能。用关键词搜索顶多能凑合,但语义差一点就找不到,体验并不好。

这时我想到了向量数据库。

为什么用 Milvus

我的服务器规格很小,只有 2 核 2G,根本跑不动本地的 Milvus,更别说大规模向量化了。好在 Milvus 有托管服务,而且带免费额度。这样我就能换个思路:

  • Mac 本地:用开源模型先做文本向量化,把长篇小说切分成小段(比如 200 个汉字一块),再计算对应的向量。
  • Milvus 云端:专门存储和管理这些向量,负责后续的相似度检索。
  • 查询时:把搜索词同样向量化,发到 Milvus 去比对,得到语义上更接近的内容。

“白嫖”资源也能玩得转。就是另外,向量化这一步我用的是 SiliconFlow 献出的模型,免费额度足够支撑实验,算

为什么要写 PHP 库

可能有人会问:Milvus 不是有 Python、Go SDK 吗?为什么非要用 PHP?

原因其实很简单:我的整个小说爬虫和阅读项目,本身就是用 PHP 写的。再硬插一门语言进去,工程会很乱。于是干脆自己写了一个 PHP 库,把常见的处理封装起来:

这样一来,整个流程都能在 PHP 项目里顺利跑通。

怎么用

举个简单的例子。假设我有一段文本 "这是一个测试文本",先在本地算好向量(这里假设是 [0.12, 0.85, ...]),然后通过库上传:

use Hejunjie\Milvus;
$baseUrl = "http://your-milvus-host"
$apiKey = "your-apikey"
$client = new Milvus\Client($baseUrl, $apiKey);
// 插入数据
$client->
entities()->
insert("novels", [
'article_id' =>
14271
'title' =>
'测试小说',
'content' =>
'这是一个测试文本',
'vector' =>
[0.12, 0.85, ...]
]);
// 搜索
$results = $client->
entities()->
search("novels", [
[0.11, 0.80, ...], // 搜索内容,通过 SiliconFlow 转换为向量
[0.11, 0.80, ...], // 支持多个数据查询
[0.11, 0.80, ...]
], 10);
print_r($results);

这样就能查到与输入向量最接近的 10 段文本。通过查询到的 id 就许可在本地数据库中查询对应的小说。
对我来说,只要输入大概的剧情方向,Milvus就能把拥有相似片段的小说找出来,比传统关键字搜索好用太多。

支持的方法

这个小库目前支持 Milvus 的常见运行,大致分成几类:

  • 集合(Collections):创建、删除、重命名、加载/释放、获取状态、设置属性等。
  • 分区(Partitions):创建、删除、加载/释放、查看列表、检查是否存在。
  • 索引(Indexes):创建、删除、查看详情,或者列出所有索引。
  • 别名(Aliases)通过:创建、修改、删除别名,也能够查看现有别名。
  • 向量数据(Entities):插入、更新(upsert)、删除、查询、向量搜索。
  • 其它:比如自定义请求、获取集合的统计信息等等。

容易来说,该有的基本操作都覆盖了,足够支撑一个小型项目的使用。

我的收获

这个库严格来说不算“生产级”,但它让我有一些新的体会:

所以说,整个过程严格意义上没什么“高大上”的地方,就是一个普通人遇到小问题,忍不住折腾了一下,最终顺手造了个小轮子。

现在呢,我终于可以随心所欲地在几万篇小说里搜索想要的片段了,再也不用翻到眼花还找不到

项目地址 zxc7563598/php-milvusr

http://www.sczhlp.com/news/80689/

相关文章:

  • yaml 中配置map属性
  • 集团网站设计特性中山网站设计
  • wordpress怎么当站长怎样做免费网站建设
  • 容桂顺德网站建设ecms dedecms phpcms wordpress
  • wordpress网站加壳网站开发前后端分离
  • 南京设计网站宁波网络营销公司有哪些
  • 搜索引擎排名优化是什么意思seo标签优化方法
  • 建站公司生存难网站开发环境搭建章节教材书
  • 网站开发教学视频百度云广告策划公司
  • 番禺做网站哪家好新站整站快速排名
  • 广东建网站的公司免费货源网站免费版权
  • 网页设计跟网站建设的区别做网站找个人
  • 义乌市住房和城乡建设局网站网站建设与代运营介绍
  • 东昌府聊城做网站公司网站建设两年免费维护
  • FOX-XSS闯关
  • 网站建设是一个什么的过程网站建设投标ppt
  • 网站seo内部优化西安平台搭建
  • 建ic网站wordpress缩略图加载慢
  • 网站的制作方法惠州手工活外发加工网
  • 西安建筑网站建设360搜索网址是多少
  • 中山建设网站的公司网站模板找超速云建站
  • 先做网站再备案吗用手机制作ppt用什么软件
  • 设计专业考研平面素材网站如何保存网站上的图片不显示图片
  • 网站建设工作内容网站建设公司与前端
  • 555
  • 张店网站制作设计公司交互做的好的网站
  • 购物网站的建设背景好看的移动端网页
  • 腾讯的网站建设用了多少钱全网营销是什么意思
  • 绵阳做手机网站长沙点看网络科技有限公司
  • thinkphp手机网站开发木樨园网站建设公司