- 对新建的文件夹,代码文件,统一在《软件架构》下说明。
- 历史的vxxx文件统一存放在history_file目录下。
- 所有的数据文件,输出样例,均使用.gitignore忽略,避免传输数据到远程仓库导致同步缓慢/仓库存储耗尽。
- 避免使用中文作为文件夹名字,否则可能导致git管理文件出现错乱。中文说明文档可以存储到docfile之中。
- 鼓励多次提交,每次更新少量代码;不鼓励单次提交多个独立模块更新。
- 避免使用 git add . 指令,这个指令在全局添加文件,可能导致数据文件等不可控内容加入到远程仓库。
- 避免使用vscode的git插件,如果一定要使用,请先掌握如何添加,提交单个文件。
中文地址图谱推荐系统主要用于机构的地址查询,确保满足各类查询需求。
- 为了将地址拆分为图/层级结构,我们引入了Neo4j图数据库存储节点地址,使用MEGO的模型完成分词。
- 为了完成基于语义相似度的地址匹配功能,我们使用MEGO模型完成地址向量编码,使用Neo4j内置向量相似度计算功能匹配相似的地址。
- 为了完成对空间位置上的地址的查询,比如“华南理工大学东面的广场”,需要使用Elasticsearch与Neo4j结合,Elasticsearch存储经纬度作为索引,依据地址相对位置查询地址。
- 在匹配功能上,我们还适配了拼音检索查询,同义词替换查询;
- 添加了记忆用户习惯功能,当匹配地址处于用户常用范围附近,会优先返回常用地址
- 添加了地址补全功能,输入短地址,如果在数据库中有符合的完整地址,会自动补全地址
主要记录存在的问题,等待更新的特性
- Neo4j存储的精度,纬度可能为nan,需要在读取原始数据时做设置,而不是输出做设置
- Neo4j访问连接缓慢,需要排查原因
- 自然语言解析模块缺乏地址POI功能类数据,需要进一步处理
- 模型多次加载,显存占用过多,需要优化
- 存在大量无意义的注释在API.py需要删改(api还有废弃的精细排序代码,需要删除)
- 读取数据,构建关系存在大量手动注释代码,执行代码的流程,需要优化此部分代码
- 精细排序在for-for循环复杂度有优化空间
- 精细排序考虑多词才计入得分,单个字词不能获得得分
- model语义的排序影响效果比较小,考虑调整其参数
-
encry.py: 实现地址文本转换为向量编码功能
-
api.py:实现API服务启动功能
-
relation_neo4j.py:创建节点连接关系
-
v16.py:读取输入数据,实现图谱的节点创建,属性读取
-
v17.py:读取输入数据,实现汕尾数据的节点创建,属性读取
-
v18.py:读取输入数据,实现汕尾数据poi的节点创建,属性读取
-
fenci_v5.py:实现中文地址分词分级功能。(已经弃用)
-
es_op.py : 实现ES中的相关查询语句创建
-
es_functions.py : 将ES的具体实现功能函数放到该文件下,包括地址字符串匹配,索引别名创建删除(已将pinyin_analyzer重命名为es_functions)
-
merge_recommend.py : (1)实现地址推荐功能,Merge_recommend组合了ES和Neo4j的查询语句,实现地址推荐功能。 (2)实现地址补全功能
-
data.py: 检测数据格式
-
embedding.py: neo4j节点单独插入embedding属性
-
pinyin.py: neo4j已有节点emb属性转拼音(速度较慢已弃用)
-
neo4j_index.py: 类方式创建索引(引用插件较多且不兼容,已弃用)
-
set_frequency.py: 统一为neo4j节点配置record_use_times属性
-
split_page.py: 测试实现分页功能
-
test.py: 测试读取es的字符在转换成id整形
-
vector_pn.py: 创建pn数据的vector节点
-
vector_poi.py: 创建潮州poi的vector节点
-
vector.py: 创建poi数据的vector节点
-
vector_sw.py: 创建sw数据的vector节点
-
vector_sw_poi.py: 创建sw数据poi的vector节点
主要实现将相关的功能封装为API接口服务,便于调用。
- 参考工程实现/neo4j安装.txt文档
- 配置neo4j数据库环境,配置Elastic search环境,依据requirements配置python环境;
- 本地配置.env文件,指定程序运行的IP,端口分配,数据库账号密码等配置;
- 启动数据读取脚本,加载数据进入Neo4j数据库;
- 在数据库web端创建索引,包括“Vector语义索引”;“id查询索引”
- 同步ES与Neo4j数据库的地址数据
- 检查ES,neo4j是否处于运行状态,在指定python环境下启动API服务
相关参考资料
- MGEO -model scope模型
- 匹配算法-揭秘业界首个多模态地理文本预训练模型MGeo背后技术及在高德的应用 - ModelScope小助理的文章 - 知乎
- VLLM推理加速与部署-baaichuan
- 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
- Gitee 官方博客 blog.gitee.com
- 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
- GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
- Gitee 官方提供的使用手册 https://gitee.com/help
- Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/