新特性
- 使用环境变量覆盖配置项。
在启动主节点的时候可以通过传递环境变量,覆盖配置文件中的配置项。目前支持以下环境变量:
环境变量 | 对应配置项 | 说明 |
---|---|---|
GORSE_CACHE_STORE | cache_store | 缓存数据库地址 |
GORSE_DATA_STORE | data_store | 存储数据库地址 |
GORSE_MASTER_PORT | port | 主节点RPC端口 |
GORSE_MASTER_HOST | host | 主节点RPC主机名 |
GORSE_MASTER_HTTP_PORT | http_port | 主节点HTTP端口 |
GORSE_MASTER_HTTP_HOST | http_host | 主节点HTTP主机名 |
GORSE_MASTER_JOBS | n_jobs | 主节点工作线程数 |
GORSE_SERVER_API_KEY | api_key | 服务节点API密钥 |
- (实验性)通过IVF向量索引查询相似物品和用户。
在寻找相似物品或者相似用户的时候,如果遍历所有的物品和用户再计算相似度是非常低效的。以相似物品查找为例,IVF索引首先将物品进行聚类,每类会有一个中心点。在查询的时候,首先找到和查询物品最相似的中心点,然后在这些中心点对应的类中查询相似物品。经过实验对比,在Goodreads数据集上为2,360,655个物品查询相似物品(标签相似),IVF索引将耗时从44小时缩减至6小时。如果使用更多的CPU核,那么时间可以进一步减少。
针对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核,那么时间可以进一步减少。
针对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索引时,需要花费额外的时间构建索引以及额外的内存存放索引。因此,在数据量较少并且服务器内存不足的情况下,建议关闭索引功能。
修复问题
- 修复了点击率图形布局问题。
旧版本控制台首页图形会在不合适的窗口尺寸下出现多余的空白,新版本调整了布局。
- 修复了超量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