欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > deepseek4j-easy-rag快速入门

deepseek4j-easy-rag快速入门

2025/11/11 7:51:53 来源:https://blog.csdn.net/qq_36120342/article/details/147381258  浏览:    关键词:deepseek4j-easy-rag快速入门

deepseek4j-easy-rag快速入门

deepseek4j 是面向 DeepSeek 推出的 Java 开发 SDK,支持 DeepSeek R1 和 V3 全系列模型。提供对话推理、函数调用、JSON结构化输出、以及基于 OpenAI 兼容 API 协议的嵌入向量生成能力。通过 Spring Boot Starter 模块,开发者可以快速为 Spring Boot 2.x/3.x 以及 Solon 等主流 Java Web 框架集成 AI 能力,提供开箱即用的配置体系、自动装配的客户端实例,以及便捷的流式响应支持。

本文章将带领大家从零开始构建一个基础 RAG 系统。通过白盒编码的方式,不仅能深入理解 RAG 的核心原理,还可以根据实际需求灵活调整和优化各个环节。相比直接使用现有的开源 RAG 产品,这种方式能让我们更好地掌控系统行为,实现更精准的知识检索和问答效果。

文章目录

  • deepseek4j-easy-rag快速入门
    • 1. 目标
    • 2.上代码
      • 2.1.Maven 依赖
      • 2.2.基础配置
      • 2.3. 基础使用示例
    • 3. 测试
    • 4. 常见向量数据库介绍
      • 4.1. 什么是向量数据库?
      • 4.2. 性能和特点概述
        • 4.2.1. 调研方法
        • 4.2.2. 详细分析
          • Weaviate
          • Qdrant
          • Milvus
          • Myscale
          • pgvector
          • pgvecto-rs
          • Chroma
          • Opensearch
          • Tidb_vector
          • Elastic search
          • Couchbase
        • 4.2.3. 性能对比表
      • 4.3. 适用场景与建议
      • 4.4. 结论

1. 目标

实现对文件的读取,通过文件内容再进行ai回答,采用简单的内存向量数据库进行操作

2.上代码

2.1.Maven 依赖

在你的 pom.xml 中添加以下依赖:

        <!-- deepseek-spring-boot-starter --><dependency><groupId>io.github.pig-mesh.ai</groupId><artifactId>deepseek-spring-boot-starter</artifactId><version>1.4.3</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-easy-rag</artifactId><version>0.35.0</version></dependency>

2.2.基础配置

application.ymlapplication.properties 中添加必要的配置:

deepseek:api-key: your-api-key-here  # 必填项:你的 API 密钥model: deepseek-reasonerbase-url: https://api.deepseek.com  # 可选,默认为官方 API 地址

2.3. 基础使用示例

	@AutowiredDeepSeekClient deepSeekClient;@Testvoid embeddingClientQuery(){String prompt = "履约保证金付多少";URL resource = getClass().getResource("/test.txt");String filePath = resource.getPath().substring(1);;//加载文档Document document = FileSystemDocumentLoader.loadDocument(filePath);InMemoryEmbeddingStore<TextSegment> embeddingStore = new InMemoryEmbeddingStore<>();//解析存储到内存中EmbeddingStoreIngestor.ingest(document, embeddingStore);List<Content> resultList = EmbeddingStoreContentRetriever.from(embeddingStore).retrieve(Query.from(prompt));String userMessage = String.format("你要根据用户输入的问题:%s \n \n 参考如下内容: %s  \n\n 整理处理最终结果", prompt, resultList);ChatCompletionRequest request = ChatCompletionRequest.builder().addSystemMessage("你是一位专业的数据分析高级工程师,通过分析内容精简的回答用户问题,不回答其他额外的内容,返回markdown格式").addUserMessage(userMessage)
//                                                           .maxCompletionTokens(5000).build();ChatCompletionResponse completionResponse = deepSeekClient.chatCompletion(request).execute();String content = completionResponse.choices().get(0).message().content();log.info("{}",content);}

3. 测试

执行单元测试 DeepSeek4jEasyRagTest

询问 履约保证金付多少

在这里插入图片描述

4. 常见向量数据库介绍

4.1. 什么是向量数据库?

向量数据库是一种专门用于存储、管理和查询高维向量数据的数据库,广泛应用于机器学习、人工智能和数据科学领域。它们支持快速相似性搜索,特别适合图像识别、自然语言处理和推荐系统等任务。

4.2. 性能和特点概述

以下是几款主要开源高性能向量数据库的简要比较,基于 2025 年的最新基准测试和用户反馈:

  • Milvus:在查询每秒(QPS)方面表现最佳,适合大规模向量相似性搜索,支持多种索引类型。
  • Qdrant:以可扩展性和性能优化著称,适合大规模场景。
  • Weaviate:提供良好的开发体验,性能均衡,适合需要同时处理向量和结构化数据的应用。
  • Chroma:易于使用,适合原型设计和中小型应用。
  • pgvector 和 pgvecto-rs:利用 PostgreSQL 的成熟性,适合已有 PostgreSQL 基础设施的用户。
  • Opensearch 和 Elastic search:适合需要全文搜索和向量混合搜索的场景。
  • Tidb_vector 和 Couchbase:适合需要分布式架构和多模型支持的应用。
  • Myscale:适合分析型工作负载,支持向量搜索。

这些数据库的性能可能因具体用例而异,建议根据项目规模和需求进行评估。


4.2.1. 调研方法

本报告通过分析多个来源的基准测试(如 VectorDBBench)、官方文档和用户反馈,评估以下开源向量数据库的性能和特点:

  • Weaviate
  • Qdrant
  • Milvus
  • Myscale
  • pgvector
  • pgvecto-rs
  • Chroma
  • Opensearch
  • Tidb_vector
  • Elastic search
  • Couchbase
4.2.2. 详细分析
Weaviate
  • 性能:Weaviate 在基准测试中表现良好,特别是在延迟和吞吐量方面。官方文档 Weaviate Cost-Performance Optimization 提到,它支持 HNSW 和平面索引,适合低延迟应用。
  • 特点:作为 AI 原生数据库,支持多模态搜索(文本、音频、视频),并提供内置知识图谱和混合搜索功能。
  • 社区支持:社区活跃,提供丰富的教程和论坛支持。
Qdrant
  • 性能:Qdrant 以其可扩展性和性能优化著称,官方文档 Qdrant Database Optimization 提到,它通过缓存和预加载技术减少搜索延迟,支持高达 16 倍的稀疏向量搜索速度提升。
  • 特点:支持高级索引和量化技术(如标量量化、产品量化),适合大规模分布式环境。
  • 社区支持:定期更新,文档清晰,适合开发者和企业用户。
Milvus
  • 性能:Milvus 在 VectorDBBench 的测试中表现出色,特别是在查询每秒(QPS)方面,经常排名第一。官方文档 Milvus Performance FAQ 提到,它通过硬件感知优化(如 AVX512、SIMD 和 GPU 支持)实现高性能。
  • 特点:支持多种索引类型(如 HNSW、IVF、DiskANN),适合十亿级别的向量相似性搜索。它的分布式架构支持水平扩展,适合读写密集型工作负载。
  • 社区支持:拥有最大的社区之一,文档详尽,定期更新。
Myscale
  • 性能:Myscale 基于 ClickHouse,官方博客 Myscale vs Weaviate 提到,它在分析型工作负载中表现优异,支持向量搜索。
  • 特点:集成 SQL 和向量搜索,适合需要分析和向量查询的场景。
  • 社区支持:较新项目,社区较小,文档可能有限。
pgvector
  • 性能:通过 pgvector 扩展,PostgreSQL 支持向量相似性搜索。官方 GitHub 页面 pgvector 提到,它支持 HNSW 和 IVFFlat 索引,但在大规模数据集上可能不如专用向量数据库。
  • 特点:利用 PostgreSQL 的成熟性和熟悉度,适合需要同时处理结构化和向量数据的场景。
  • 社区支持:PostgreSQL 社区庞大,pgvector 相对较新,但发展迅速。
pgvecto-rs
  • 性能:pgvecto-rs 是 PostgreSQL 的另一个向量扩展,官方文档 pgvecto-rs Overview 提到,它使用 Rust 编写,可能比 pgvector 更快,支持 HNSW 和 IVFFlat。
  • 特点:支持高达 65535 维的向量,适合最新模型。
  • 社区支持:较新项目,社区较小,但有潜力。
Chroma
  • 性能:Chroma 适合中小型应用,官方网站 Chroma 提到,它使用 HNSW 和 Flat 索引,适合快速原型设计。
  • 特点:易于使用,提供嵌入式数据库功能,支持 LangChain 和 LlamaIndex。
  • 社区支持:社区活跃,文档清晰,适合初学者。
Opensearch
  • 性能:Opensearch 通过 k-NN 插件支持向量搜索,官方文档 Opensearch Vector Database 提到,它适合大规模分布式环境,支持 HNSW 和 Flat。
  • 特点:支持混合搜索,适合需要全文搜索和向量搜索的场景。
  • 社区支持:社区较大,文档丰富,适合企业用户。
Tidb_vector
  • 性能:Tidb_vector 是 TiDB 的一部分,官方博客 TiDB Vector Search 提到,它支持分布式架构,适合大规模应用。
  • 特点:支持向量搜索和 SQL 查询,适合需要事务和分析混合负载的场景。
  • 社区支持:TiDB 社区强大,文档详尽。
Elastic search
  • 性能:Elastic search 支持向量搜索,官方博客 Elastic Vector Database 提到,它适合混合搜索,性能良好。
  • 特点:支持 HNSW 和 Flat,适合需要全文搜索和向量搜索的场景。
  • 社区支持:社区庞大,文档丰富,适合企业用户。
Couchbase
  • 性能:Couchbase 支持向量搜索,官方博客 Couchbase Vector Search 提到,它适合 NoSQL 环境,性能良好。
  • 特点:支持 HNSW 和 Flat,适合多模型应用。
  • 社区支持:社区活跃,文档详尽,适合企业用户。
4.2.3. 性能对比表

以下是基于 VectorDBBench 和其他基准测试的性能对比(单位:QPS,数据为示例,具体以最新基准为准):

数据库QPS (高负载)延迟 (ms)召回率 (%)适合场景
Milvus5000+<295+大规模向量搜索
Qdrant4000+❤️92+可扩展分布式环境
Weaviate3000+<590+AI 原生应用,混合搜索
Chroma2000+<585+原型设计,中小型应用
pgvector1000+10+100结构化+向量数据混合场景
pgvecto-rs1500+8+95+PostgreSQL 扩展,快速搜索
Opensearch3500+❤️95+全文+向量混合搜索
Tidb_vector3000+<590+分布式事务和分析混合负载
Elastic search3500+❤️95+混合搜索,企业级应用
Couchbase2500+<590+NoSQL 多模型应用
Myscale2000+<585+分析型工作负载

4.3. 适用场景与建议

  • 如果项目需要处理十亿级别的向量数据,MilvusQdrant 是首选。
  • 对于需要 AI 原生功能和开发友好性的场景,WeaviateChroma 是一个不错的选择。
  • 在可扩展性和分布式环境中有需求时,OpensearchTidb_vectorElastic search 表现优异。
  • 如果已有 PostgreSQL 基础设施,考虑使用 pgvectorpgvecto-rs,但注意在大规模场景下的性能限制。
  • 对于 NoSQL 数据库和多模型支持,Couchbase 是一个轻量级选项。
  • 新兴的 Myscale 适合高吞吐量分析型工作负载,特别适合 AI 开发者的快速原型设计。

4.4. 结论

Weaviate、Qdrant、Milvus、Myscale、pgvector、pgvecto-rs、Chroma、Opensearch、Tidb_vector、Elastic search 和 Couchbase 是当前开源高性能向量数据库的领先选择,各自在性能和功能上有独特优势。用户应根据具体项目需求(如数据规模、查询类型、开发复杂性)选择合适的数据库。未来,随着 AI 应用的进一步发展,向量数据库的性能和功能将继续提升,建议定期关注社区更新和基准测试结果。

博客地址

代码下载

下面的deepseek4j-easy-rag

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词