SightRAG:视觉检索增强生成

保安为找一个人要看数小时的录像。零售经理要走遍货架通道检查陈列是否合规。放射科医生要翻遍数百张图像寻找类似的病例。仓库工人要一页一页地翻文件夹,寻找正确的托盘。

SightRAG:视觉检索增强生成
AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo

每家公司都有成千上万张图片。监控摄像头、产品照片、医疗图片、卫星图片、仓库库存图片、流水线图片。

但要找到足够精确的视觉信息,仍然是一件痛苦的事。

保安为找一个人要看数小时的录像。零售经理要走遍货架通道检查陈列是否合规。放射科医生要翻遍数百张图像寻找类似的病例。仓库工人要一页一页地翻文件夹,寻找正确的托盘。

我们改变了搜索文档和文本的方式,但视觉数据在很大程度上仍然靠人工搜索。

这正是 SightRAG 要解决的问题。

None

1、SightRAG 是什么

三行代码。指向你的数据。用简单的英语提问。找到答案。

from sightrag import SightRAG

rag = SightRAG()
rag.index("./photos/")
results = rag.query("find person near exit")
rag.show(results)

就这样。支持图片文件夹、视频文件和实时摄像头流。返回带边界框、置信度分数和时间戳的匹配图像。

无需训练。无需标注。无需定制流水线。安装即搜索。

None

2、适用场景

2.1 零售——货架智能

rag = SightRAG(ocr=True)
rag.index("./store_cameras/")
rag.query("find empty shelf")
rag.query("find Calgon 2kg")        # OCR reads the label
rag.query("find misplaced product")

在一家零售连锁店里,一个门店有 50 台摄像头。摄像头每小时拍摄一次货架照片。SightRAG 为它们建立索引。经理搜索

"find empty shelf near dairy"(找乳制品区附近的空货架)

就能得到带时间戳的精确图像。不用再走地板巡查。

OCR 用于扫描产品标签。包装上实际写着

"Find Calgon"(找 Calgon)

过去耗时数小时的库存盘点,现在只需几秒。

None

2.2 安防——找到是谁,找到何时

rag = SightRAG()
rag.index("./cctv/entrance_cam.mp4")
results = rag.query(reference="./suspect_photo.jpg")

播放 CCTV 录像。用一张参考照片搜索,SightRAG 会返回该人物出现的每一帧,并带有精确的时间戳。

"嫌疑人于凌晨 2:15 出现在入口摄像头。7 号摄像头,凌晨 1:45。"

保安过去要花 4 小时逐帧翻看。现在,只需要一次查询。

2.3 制造——缺陷检测

rag = SightRAG(detector="grounding-dino")
rag.index("./assembly_line/")
rag.query("find cracked surface")
rag.query("find misaligned component")

Grounding DINO 可以找到你提到的任何缺陷。没有 COCO 类别限制。无需微调。输入你要找的东西即可。

对于复杂的纹理缺陷,可以通过 DetectorBase 接口接入你自己微调过的模型。嵌入、索引、检索、可视化这些其余工作都由 SightRAG 完成。

2.4 医疗——相似病例检索

rag = SightRAG(detector=MyTumorDetector(), embedder=BiomedCLIP())
rag.index("./patient_scans/")
results = rag.query(reference="./new_scan.dcm")

放射科医生查看新扫描。搜索医院数据库。SightRAG 显示三个视觉上最相似的历史病例。这不是诊断,而是一个每个病例能省下 30 分钟人工搜索的参考工具。

自带你的医学检测模型,使用你自己的领域专用嵌入器。SightRAG 把它们串联起来。

3、内部工作原理

SightRAG:模块化视觉 RAG 流水线。它不把你锁定在某个特定的 AI 模型或数据库上,你可以自定义每一步,但整体工作流保持不变。

SightRAG 为图像、视频或摄像头流的每一帧建立索引。第一步是使用检测模型,例如 YOLO、Grounding DINO 或你自己的检测器,来检测感兴趣的目标或区域。这些区域可以是人、车辆、产品、医学发现、制造组件,或者你的检测器能够识别的任何其他东西,具体取决于你的用例。

如果启用了 OCR,则会对检测到的区域执行文本提取。视觉信息和产品标签、序列号、车牌号、包裹 ID、警示标志以及其他可见文本都会被提取并存储。这意味着你可以按外观搜索,也可以按可搜索的文本搜索。

随后,每个检测到的区域都会使用视觉-语言模型(如 CLIP、BiomedCLIP、RemoteCLIP 或其他兼容的嵌入模型)转换为向量嵌入。这些嵌入编码了图像区域的语义含义,支持通过自然语言搜索,或通过提供另一张参考图像来搜索。

这些嵌入连同元数据、OCR 结果、边界框、时间戳和源文件信息一起存储在向量数据库中。SightRAG 支持 SQLite 这样的轻量级本地存储,也支持 Qdrant 这样的可扩展向量数据库,让同一个工作流可以从笔记本电脑扩展到企业级部署。

当用户提交查询时,SightRAG 使用同一个嵌入模型把文本或参考图像转换为嵌入。然后在向量数据库中做最近邻搜索,找到最佳匹配。结果包含置信度分数,以及视频和对应图像区域的元数据与时间戳。

最后,SightRAG 通过显示带边界框、OCR 文本、相似度分数和时间戳的匹配图像/视频帧来可视化结果,让用户很容易理解每条结果为什么被返回。

关键在于各阶段之间互不依赖。你可以更换检测器、嵌入模型、OCR 引擎、向量数据库或可视化层,而不会影响流水线的其他部分。无论你是在构建零售分析系统、搜索医学图像、检查制造缺陷,还是分析安防录像,工作流都是一样的,底层模型可以按你的领域进行适配。

4、独特之处

它不是模型,而是一个系统。大多数视觉 AI 工具提供给你的只是一个模型。SightRAG 提供给你的是把任何模型、任何存储和任何查询接口连接起来的流水线。模型会变。系统不变。

它以本地优先。你的数据留在你的电脑上。没有云端 API。没有遥测。不会收集任何数据。开源,每一行代码都可读。医疗、国防和政府团队可以放心使用,无需担心合规问题。

它开箱即快。SightRAG 会自动检测已安装的 TensorRT、ONNX、OpenVINO、PyTorch,并选择最快的后端。OCR 在索引时运行,而不是在查询时。多模态理解是可选的,只有你主动要求才启用。默认情况下,查询在 50 毫秒内返回。

它"识字"。OCR 在索引过程中扫描产品标签、标志、车牌和文档。包装上的文字实际写着"Calgon 2kg"。这不是视觉相似,这是真正的读取。

它适用于所有领域。Grounding DINO 支持文本描述对象检测。无需训练数据。

"Find rust on bridge surface"(找桥面上的锈蚀)

可以作用于基础设施照片。焊接点裂纹定位可以作用于电路板。输入你想要什么。它就能定位。

5、它做不到什么

诚实比功能清单更重要。

SightRAG 无法取代领域专家模型来检测细微缺陷。对于纹理异常、微裂纹和色差,需要针对领域数据微调过的模型。SightRAG 不内置这些模型,但它通过可插拔架构支持它们。

SightRAG 目前还无法理解复杂的空间关系。"find person near exit"(找人靠近出口)会分别检测人和出口。"near"(靠近)这种空间理解能力在路线图上。

CLIP 与文本查询的相似度分数在 0.15 到 0.35 之间。这对 CLIP 来说是正常的,但面对一个期望分数接近 1.0 的用户,看起来就不对了。评分是对的。只是绝对数值并非不言自明。

6、快速上手

用 SightRAG 入门只需几行代码。

!pip install sightrag
from sightrag import SightRAG
rag = SightRAG()
rag.index("./photos/")
results = rag.query("find person")
rag.show(results)

无论你是在搜索图像集合、分析视频档案,还是围绕实时摄像头流进行构建,SightRAG 都为视觉检索提供了一个简单且可扩展的基础。


原文链接:SightRAG: Visual RAG for Images, Video, and Camera Feeds

汇智网翻译整理,转载请标明出处