不装一整套训练框架,FastEmbed 也能给资料生成搜索向量

开源项目猫目发布于 来源:FastEmbed 官方资料
它用ONNX Runtime运行支持的模型,先把文档编码这一步做轻,再接检索。

为什么值得关注

为本地资料搜索提供较轻量的向量生成入口。

适合谁:需要在CPU环境或轻量服务里建立资料检索的开发者

这次有哪些亮点

  • 以ONNX Runtime运行模型
  • 查询与资料有各自编码入口
  • 返回生成器便于逐步消费结果

使用前需要知道

框架Apache 2.0,模型许可另看;默认示例使用英文模型,不应直接承诺中文效果或免下载。

搭一个小型资料搜索,并不一定要先准备完整的模型训练环境。FastEmbed聚焦的事情更窄:用ONNX Runtime运行支持的模型,把文本变成检索需要的向量,再交给后面的搜索逻辑。

如果你已经知道要处理哪一批资料,只是希望把编码这一层放进CPU环境或较轻的服务,它提供了一个比较直接的入口。

先看它真正交出的东西

仓库快速示例给两段文档调用 TextEmbedding,得到每段对应的向量。示例中的默认英文模型输出384维数据,返回值是生成器,可以逐项取出,也可以再转换成列表。

维度属于选定模型,不是FastEmbed给所有模型规定的统一大小。换模型以后,索引的维度、旧资料的表示和查询编码都要相应匹配。不能只改一个模型名称,就假定原来的向量库还可以混用。

快速示例也明确写出,初始化会触发模型下载。运行采用本地推理,不等于首次准备时完全不需要网络;若要放进受限网络环境,模型文件准备与缓存位置应提前处理。

查询与资料为什么有不同入口

官方检索教程用十段人物资料建立向量,再为一个问题生成查询向量,比较后按分数排序。它建议资料使用 passage_embed,问题使用 query_embed,让调用者明确区分这两类输入。

这对代码组织很有帮助:资料通常入库时编码一次,查询则在搜索发生时编码。某些模型还对查询或段落有前缀约定,应由具体模型和接口处理,而不是把一段通用提示词加到所有文字前面。

教程展示的是英文资料,不能作为中文检索效果的证明。若要搜索中文工作文档,需要从支持列表中选合适模型,并用真实查询核对。接口名字本身也不意味着任何模型经过它处理后都会提高准确率。

它负责编码,搜索结果还需要来源

向量生成后,仍要存储、比较并找回原文。FastEmbed可以与Qdrant配合,但库本身并不等于已经搭好一套文件管理、权限和聊天界面。一个小实验可以先保留文档ID、原文和向量,查看查询是否把相关资料排到前面。

对内容工具,ID尤其重要。只存向量却丢掉资料标题与位置,即使分数很高,也无法把读者送回原段落。编码结果应当作为索引的一部分,而不是替代原材料。

项目采用Apache 2.0许可,所加载模型仍要分别核对。它的取舍也比较清楚:用较集中的运行时和模型支持范围,换取较轻的编码依赖;是否适合你的机器与资料,要看具体模型、输入长度和数据量。先把一组文档可靠地变成可检索数据,再接更多界面与功能,会更容易看清这一步是否已经工作。

原始资料:FastEmbed 官方资料

以上为编辑整理,功能、许可与使用条件以官方说明为准。

返回每日分享