箭头空间

arrowspace
分类通用
作者Agentic Awesome Skills 社区
许可Apache-2.0
评分4.70/5
使用12.8K

ArrowSpace

一种谱向量搜索技术,通过图拉普拉斯特征增强最近邻搜索。它在项目图上计算拉普拉斯矩阵,并利用瑞利商(Rayleigh quotient)为每个项目生成 $\lambda\tau$ (lambda-tau) 分数,从而实现兼顾语义相似度和结构角色的搜索。

何时使用此技能

  • 余弦或 L2 相似度无法捕捉嵌入向量中的潜在结构时
  • 需要具有谱感知能力的基于图的检索时
  • 需要表征嵌入空间的谱属性时
  • 构建 RAG 流水线且上下文角色与语义内容同等重要时

工作原理

第一步:安装与导入

bash
pip install arrowspace
python
from arrowspace import ArrowSpaceBuilder
import numpy as np

第二步:准备数据

传入一个形状为 $(N, d)$ 的 float64 NumPy 嵌入向量数组:

python
items = np.array([[0.1, 0.2, 0.3],
                  [0.0, 0.5, 0.1],
                  [0.9, 0.1, 0.0]], dtype=np.float64)

第三步:配置图参数

python
graph_params = {"eps": 0.2, "k": 6, "topk": 3, "p": 2.0, "sigma": 1.0}
builder = ArrowSpaceBuilder(items, graph_params=graph_params)
aspace = builder.build()

第四步:查询

python
lambdas = aspace.lambdas()           # 按插入顺序索引的数组
sorted_res = aspace.lambdas_sorted()  # (分数, 索引) 对,升序排列

较高的 $\lambda\tau$ 值表示该项目在语义上接近且在结构上处于中心位置。

示例

示例 1:基础谱检索

python
items = np.random.randn(100, 64).astype(np.float64)
builder = ArrowSpaceBuilder(items, graph_params={"eps": 0.5, "k": 10, "topk": 5, "p": 2.0, "sigma": None})
aspace = builder.build()
scores = aspace.lambdas()
top_indices = np.argsort(scores)[-5:]

示例 2:比较谱排序与余弦排序

python
from sklearn.metrics.pairwise import cosine_similarity
cos_sim = cosine_similarity(items)
cosine_order = np.argsort(cos_sim[0])[::-1]
spectral_order = np.argsort(aspace.lambdas())[::-1]

最佳实践

  • ✅ 在传入 ArrowSpace 之前,将嵌入向量归一化为单位范数
  • ✅ 初始 $\text{eps}$ 可设为与 $1/\sqrt{\text{dim}}$ 成比例,然后进行调优
  • ✅ 根据数据集大小将 $k$ 设置在 3 到 25 之间(经验法则:$N/50$)
  • ✅ 设置 $\text{sigma}=\text{None}$ 以从距离分布中自动选择核宽度
  • ❌ 不要用于少于 10 个项目的数据集(图结构没有意义)
  • ❌ 不要用于实时流数据(ArrowSpace 是面向批处理的)

局限性

  • 此技能不能替代针对特定环境的验证、测试或专家评审。
  • ArrowSpace 是面向批处理的,并非为流数据的实时索引而设计。

常见陷阱

  • 问题: $\text{eps}$ 过小,导致生成的图是不连通的
解决方案: 增大 $\text{eps}$,或将其设置为与 $1/\sqrt{\text{embedding\_dim}}$ 成比例
  • 问题: $k$ 过大,导致生成的图过于稠密,谱特征被冲淡
特性 解决方案: 对于大多数数据集,保持 k ≤ 25

相关技能

  • vector-database-engineer — 通用向量数据库专业知识
  • embedding-strategies — 嵌入模型选择与分块策略
  • similarity-search-patterns — 语义搜索实现模式
  • hybrid-search-implementation — 语义 + 关键词混合搜索实现