Gorse v0.3.2更新

268 阅读4分钟

Github: Gorse v0.3.2更新

新特性

  • 使用环境变量覆盖配置项。

在启动主节点的时候可以通过传递环境变量,覆盖配置文件中的配置项。目前支持以下环境变量:

环境变量对应配置项说明
GORSE_CACHE_STOREcache_store缓存数据库地址
GORSE_DATA_STOREdata_store存储数据库地址
GORSE_MASTER_PORTport主节点RPC端口
GORSE_MASTER_HOSThost主节点RPC主机名
GORSE_MASTER_HTTP_PORThttp_port主节点HTTP端口
GORSE_MASTER_HTTP_HOSThttp_host主节点HTTP主机名
GORSE_MASTER_JOBSn_jobs主节点工作线程数
GORSE_SERVER_API_KEYapi_key服务节点API密钥
  • (实验性)通过IVF向量索引查询相似物品和用户。

在寻找相似物品或者相似用户的时候,如果遍历所有的物品和用户再计算相似度是非常低效的。以相似物品查找为例,IVF索引首先将物品进行聚类,每类会有一个中心点。在查询的时候,首先找到和查询物品最相似的中心点,然后在这些中心点对应的类中查询相似物品。经过实验对比,在Goodreads数据集上为2,360,655个物品查询相似物品(标签相似),IVF索引将耗时从44小时缩减至6小时。如果使用更多的CPU核,那么时间可以进一步减少。 Bar-20220127.png

针对IVF索引,配置文件中增加了6个选项。enable_item_neighbor_index用于在查找相似物品时开启IVF索引。查询使用的中心点数量会决定查询的进度,因此在创建IVF索引的时候,算法会尝试增加中心点数量item_neighbor_index_fit_epoch次,当到达查询次数或者查询准确率到达item_neighbor_index_recall则结束中心点数量增长,完成索引创建。相似用户相关的参数同理。

# Enable approximate item neighbor searching using vector index.
enable_item_neighbor_index = false

# Minimal recall for approximate item neighbor searching.
item_neighbor_index_recall = 0.8

# Maximal number of fit epochs for approximate item neighbor searching vector index.
item_neighbor_index_fit_epoch = 3

# Enable approximate user neighbor searching using vector index.
enable_user_neighbor_index = false

# Minimal recall for approximate user neighbor searching.
user_neighbor_index_recall = 0.8

# Maximal number of fit epochs for approximate user neighbor searching vector index.
user_neighbor_index_fit_epoch = 3
  • (实验性) 通过HNSW向量索引筛选推荐物品。

在筛选推荐物品的时候,也可以通过向量索引提升推荐速度。HNSW索引为所有的向量生成一个导航图,在搜索的时候通过导航图找到目标。经过实验对比,在Goodreads数据集上为876,146个用户在2,360,655个物品中筛选推荐物品,HNSW索引将耗时从195.3小时缩减至4.9小时。如果使用更多的CPU核,那么时间可以进一步减少。 Bar-20220201.png

针对HNSW索引,配置文件中增加了3个选项。enable_collaborative_index用于在筛选推荐物品时开启HNSW索引。在创建HNSW索引的时候,算法会尝试调整构建参数collaborative_index_fit_epoch次,当到达尝试次数或者查询准确率到达collaborative_index_fit_epoch则完成索引创建。

# Enable approximate collaborative filtering recommend using vector index.
enable_collaborative_index = false

# Minimal recall for approximate collaborative filtering recommend.
collaborative_index_recall = 0.9

# Maximal number of fit epochs for approximate collaborative filtering recommend vector index.
collaborative_index_fit_epoch = 3

注意事项:使用IVF索引或者HNSW索引时,需要花费额外的时间构建索引以及额外的内存存放索引。因此,在数据量较少并且服务器内存不足的情况下,建议关闭索引功能。

修复问题

  • 修复了点击率图形布局问题。

旧版本控制台首页图形会在不合适的窗口尺寸下出现多余的空白,新版本调整了布局。

FireShot Capture 019 - Gorse Dashboard - 117.50.176.44.png

  • 修复了超量Redis数据写入问题。

单次Redis写入会对数据量有限制,新版本通过分多次写入避免了此问题。

  • 允许数据库中JSON字段为空值。

解析空的JSON字符串的时候会报错,新版本将空字符串视为null

  • 修复了推荐接口offset溢出问题。

如果offset参数超过能够返回的推荐条目数量,就会触发数组越界,新版本修复了此问题。

更新指南

  • Redis: 由于存储相似物品和相似用户的数据结构发生了变化,需要清空原先的缓存。
redis-cli KEYS "item_neighbors*" | xargs redis-cli DEL
redis-cli KEYS "user_neighbors*" | xargs redis-cli DEL