• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ly1836
V2EX  ›  程序员

分享一个自己写的 Spring AI RAG Demo,给 Java 同学做个参考

  •  2
     
  •   ly1836 · 1 day ago · 1851 views
    最近在折腾 Spring AI ,顺手把 RAG 相关的代码整理成了一个 demo ,放出来给有需要的 Java 同学参考。

    仓库地址:

    https://github.com/ly1836/spring-ai-rag-demo


    项目主要是把一套基础的 RAG 流程串起来,适合想从 Java / Spring Boot 这边了解 Spring AI 的同学,也可以拿去改成自己的小项目。

    这个项目同时也是我实践 Codex + OpenSpec 开发方式的一次尝试。大致流程是先用 OpenSpec 整理需求、设计和任务,再用 Codex 辅助写代码、补测试和检查改动,最终实现和取舍还是由自己确认。

    目前项目还在持续完善,主要希望代码尽量直观,方便直接看实现和继续折腾。README 、配置说明和示例后面也会继续补充。

    如果你也在研究 Spring AI 、RAG ,或者正在尝试 Codex + OpenSpec 这类开发流程,欢迎交流。有配置不清楚、代码写得不合理的地方,也可以直接提 issue 。
    13 replies    2026-07-21 10:43:50 +08:00
    mmdsun
        1
    mmdsun  
       1 day ago via iPhone   ❤️ 1
    不错~赞了。可以优化下 rag 搜索,比较常用的都是向量和关键词的混合搜索+rerank 模型排序,搜索参数自定义比如 0.8 分数、返回条数、提示词
    liangc230323
        2
    liangc230323  
       1 day ago   ❤️ 1
    https://github.com/onceMisery/seahorse-agent
    我也是纯 OpenSpec 开发的,主要是前期没有定义好方向,现在已经不受控制了😂
    ly1836
        3
    ly1836  
    OP
       1 day ago
    @mmdsun 阔以,有空会继续优化下。
    nofishing
        4
    nofishing  
       1 day ago   ❤️ 1
    我也在学习,最近探索的方向是 microcore + plugin 来实现适配各种垂类 RAG 。遇到的主要问题是 chunker 和分类器的优化,需要分类器正确识别数据的类型以分发到正确的专向 chunker ,再分发到对应垂类或通用模型,理解数据是关键,文本和视觉都需要不同的模型处理。上述是 inngest 阶段,query 阶段再多个 rerank 的设计。
    ly1836
        5
    ly1836  
    OP
       1 day ago
    @nofishing 不错,很好的想法
    ly1836
        6
    ly1836  
    OP
       1 day ago
    @liangc230323 你的这个仓库模块好多,很复杂的样子,openspec 做一些小项目确实挺顺手的。
    liangc230323
        7
    liangc230323  
       1 day ago   ❤️ 1
    我看了下项目代码,直接通过 sql 来查询 db 这种是不是有数据权限风险,还有通过 SQL 怎么精准的查询出想要的数据,这个有没有办法评估。
    当然我认为现阶段 evalution 最难搞的, 有点鸡生蛋的意思
    ly1836
        8
    ly1836  
    OP
       1 day ago
    @liangc230323 #7 这个项目的数据权限做的很粗糙,只做了租户隔离。
    1. 我的想法是不去做更细的数据权限,能使用这个功能的就直接是项目经理(能查询系统内所有数据)
    2. sql 注入的话当前流程是 LLM 根据用户自然语言去解析出来的,然后做了初步的安全校验(详见 SqlToolValidator.java),然后 SQL 里的 :param 会被替换成 JDBC 的 ? 占位符,已经最大程度去规避 sql 注入的风险了
    3. 数据精准度打分的话目前没去弄,我的想法是收集工具调用次数、入参、命中数据(项目中有部分功能),后续再去自动分析、标注。
    supuwoerc
        9
    supuwoerc  
       1 day ago   ❤️ 1
    我最近在看 GBrain 这个项目,觉得比传统的 RAG 要合适实际场景,OP 看看是不是可以借鉴一下~
    noob9030
        10
    noob9030  
       1 day ago   ❤️ 1
    可以,不错学习一下
    ly1836
        11
    ly1836  
    OP
       1 day ago
    @supuwoerc 可以的,学习学习。
    feiqiu
        12
    feiqiu  
       1 day ago   ❤️ 1
    插眼学习一下
    changlin1024
        13
    changlin1024  
       11h 27m ago   ❤️ 1
    插眼学习一手
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3105 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 14:11 · PVG 22:11 · LAX 07:11 · JFK 10:11
    ♥ Do have faith in what you're doing.