LangChain4j 项目实战------idea快捷键搜索
传统的快捷键搜索
idea集成开发环境是很多java开发者使用的开发工具之一,它有很多快捷键。传统的方法检索快捷键的步骤:
- 打开设置 ctrl + alt + s
- 移动到 Keymap导航栏 ↓
- 切换到搜索框 Tab
idea 快捷键搜索应用介绍
项目说明
- 支持中文检索快捷键
- 支持相似文本搜索快捷键
运行环境
JDK 21
技术选型
- LangChain4j,大模型框架,有免费的api接口可以试用,适合学习试用。Java开发者的福音,类似于Python的LangChain框架
- DuckDB, 内嵌项目的数据库,不需要网络连接,支持向量检索
- 大模型API接口,翻译idea的英文快捷键
- 向量化模型API接口,向量化文本,存储到向量库,相似文本搜索
源码地址
- github:https://github.com/shootercheng/idea-shortcut-key.git
- gitee: https://gitee.com/3281328128/idea-shortcut-key
代码说明
项目结构

- database 目录, duckdb 文件存储目录
- keymap 目录,idea 快捷键 xml 配置文件
- src目录,有2个主要的类: (1)InitStore 负责解析xml,翻译idea英文到中文,保存解析数据到DuckDb数据库,初始化运行一次就够了(2)KeyMapSearch负责检索使用
使用说明
- 新建配置文件 model.properties,路径 /config/shortcut-key/model.properties
java
private static final String MODEL_CONFIG_PATH = "/config/shortcut-key/model.properties";
当然也可以修改对应的路径,代码地址 org.scd.InitStore#MODEL_CONFIG_PATH
- 删除keymap目录的xml配置文件,将本地的idea快捷键配置复制到对应的目录,查找快捷键xml配置文件请查看 https://blog.csdn.net/modelmd/article/details/148201731
- InitStore 主函数只需要初始化运行,如果快捷键有变更才需要重新初始化
- KeyMapSearch 如果想调整查找的精确度,可以调整score的大小
java
var queryEmbedding = InitStore.embeddingModel.embed(userQuery).content();
var request = EmbeddingSearchRequest.builder()
.queryEmbedding(queryEmbedding)
.minScore(0.8D)
.maxResults(20).build();
minScore 最小的分数,符合要求的数据项 >= 0.8 分,完全相似是1分,分数越大越相似
演示
运行 KeyMapSearch
总结
刚开始使用本地向量化模型 AllMiniLmL6V2QuantizedEmbeddingModel
发现对中文的相似搜索不准确,英文是可以的,后来切换成 text-embedding-v3
中文相似搜索比较准确