停止重新索引:我们如何使用 sochDB 将实时搜索直接嵌入数据库

发布: (2026年2月7日 GMT+8 18:58)
6 分钟阅读
原文: Dev.to

Source: Dev.to

每次我们需要“实时搜索”时,都会被告知同样的做法:搭建搜索引擎,构建数据摄取管道,不断重新索引,并期望它保持新鲜。它起作用——直到它失效。

在本文中,我将解释为什么重新索引在实时系统中根本上是有缺陷的,以及我们是如何构建 SochDB,使搜索成为数据库的原生功能,而不是一个独立的基础设施问题。

🔍 用例:跨实时数据的即时搜索

  • 实时 API(新闻、社交、定价、遥测)
  • 新抓取的数据
  • 流式更新,答案必须随互联网的变化而变化

🧱 SochDB 映射

层级SochDB 角色
Ingestion应用程序获取实时数据(HTTP、WebSocket、Kafka、cron)
Storage用于原始数据 + 元数据的 SQL 表
Vectors将嵌入向量与行数据一起存储
Context Memory跟踪 已看到的内容、新鲜度、相关性
Query混合方式:SQL 过滤 → 向量相似度 → 上下文重新排序

示例查询

SELECT *
FROM web_events
WHERE source = 'news'
  AND published_at > now() - interval '2 hours'
ORDER BY vector_similarity(embedding, :query_vec) DESC
LIMIT 10;

💡 为什么 SochDB 胜出

  • 无重新索引管道
  • 无单独的搜索集群
  • 新鲜度是自然的,而不是后加的

2️⃣ 实时 RAG 用于 AI 代理(代理记忆 > 搜索)

🤖 用例

LLM 代理能够:

  • 浏览网页
  • 调用工具
  • 记住已经学到的内容
  • 避免重复

🧱 SochDB 映射

组件SochDB 负责内容
工具输出以结构化 SQL 行存储
代理记忆向量 + 上下文记忆表
去重上下文哈希防止重复获取
基础SQL 事实 + 嵌入 = 可验证的答案

代理循环

flowchart LR
    A[User Query] --> B[Search tool]
    B --> C[Store result in SochDB]
    C --> D[Check memory overlap]
    D --> E[Answer with citations]

这就是 代理记忆,而不仅仅是 RAG。

3️⃣ 实时个性化(随用户变化的搜索)

🧍 用例

  • 电子商务
  • 内容流
  • 内部开发者门户

搜索结果会 因用户、因时刻而异

🧱 SochDB 映射

用途
users个人资料和偏好
events点击、浏览、操作
items可搜索实体
user_context滚动会话记忆

查询流程

SELECT i.*
FROM items i
JOIN user_context uc ON uc.user_id = :uid
WHERE i.category = uc.current_interest
ORDER BY vector_similarity(i.embedding, uc.session_embedding) DESC;

无需 Redis + Elastic + 特征库混乱的个性化。

4️⃣ 实时可观测性与日志搜索(面向开发者)

🧪 用例

  • 按意义而非仅关键词搜索日志
  • 更快调试事件
  • 本地优先调试

🧱 SochDB 映射

AspectImplementation
LogsSQL rows (structured)
MeaningVector embeddings per log
ContextIncident timeline memory
SearchSemantic + time‑windowed SQL

示例查询

SELECT *
FROM logs
WHERE service = 'payments'
  AND ts > now() - interval '15 minutes'
ORDER BY vector_similarity(embedding, :error_description) DESC;

取代 grep + Elastic + hope.

5️⃣ IoT / Edge Real‑Time Search (Offline‑First)

🌐 Use‑case

  • 传感器
  • 边缘网关
  • 必须在无云环境下运行的智能基础设施

🧱 SochDB Mapping

约束SochDB 优势
离线嵌入式数据库
延迟无网络跳转
流式仅追加的 SQL 表
推理本地向量搜索

示例查询

SELECT *
FROM sensor_events
WHERE device_id = :edge_id
ORDER BY ts DESC
LIMIT 100;

当云优先的数据库在此完全失效时。

6️⃣ 实时知识库搜索(文档、代码、工单)

📚 使用场景

  • 内部文档
  • GitHub issue
  • RFC
  • Slack 导出

🧱 SochDB 映射

数据存储方式
文档SQL 行
代码分块嵌入
工单上下文关联记忆
更新即时可用

示例查询

SELECT *
FROM knowledge_chunks
WHERE project = 'sochdb'
ORDER BY vector_similarity(embedding, :question_vec) DESC;

无需重新索引,无搜索基础设施开销。

🧠 为什么这种映射如此强大

传统堆栈

flowchart LR
    A[App] --> B[Kafka] --> C[ETL] --> D[Search Engine] --> E[Cache] --> F[Feature Store] --> G[Hope];

SochDB 堆栈

flowchart LR
    A[App] --> B[SochDB];

我们很乐意听取您的反馈——无论是意见、问题,还是您正在尝试解决的难题。

👉 SochDB on GitHub

0 浏览
Back to Blog

相关文章

阅读更多 »