Spring AI教程(二十三):向量数据库支持与示例项目 | Spring AI教程(二十四):接口设计与Testcontainers支持
创始人
2024-11-04 14:10:48
0

Spring AI教程(二十三):向量数据库支持与示例项目

在前面的文章中,我们详细介绍了Spring AI支持的各种模型,包括聊天模型、图像生成模型和音频处理模型。本篇文章将探讨Spring AI支持的向量数据库以及一些示例项目,帮助你更好地应用Spring AI。

向量数据库支持

Spring AI支持多种向量数据库,用于存储和检索嵌入向量。这些数据库可以帮助你在实际应用中高效地处理大规模的向量数据。

向量数据库API

Spring AI提供了一个统一的向量数据库API,你可以通过这个API与各种向量数据库交互。以下是Spring AI支持的主要向量数据库:

  • Azure Vector Search

    • Azure Vector Search 文档
    • Azure Vector Search 概述
  • Chroma Vector Store

    • Chroma Vector Store 文档
    • Chroma 官网
  • Milvus Vector Store

    • Milvus Vector Store 文档
    • Milvus 官网
  • Neo4j Vector Store

    • Neo4j Vector Store 文档
    • Neo4j 官网
  • PgVector Store

    • PgVector Store 文档
    • PostgreSQL/PGVector
  • Pinecone Vector Store

    • Pinecone Vector Store 文档
    • Pinecone 官网
  • Qdrant Vector Store

    • Qdrant Vector Store 文档
    • Qdrant 官网
  • Redis Vector Store

    • Redis Vector Store 文档
    • Redis 官网
  • Weaviate Vector Store

    • Weaviate Vector Store 文档
    • Weaviate 官网
  • Simple Vector Store

    • Simple Vector Store 源码
    • 这是一个简单的(内存中)持久向量存储实现,适合教育目的。

示例项目

你可以克隆这些GitHub上的示例项目,了解如何在实际应用中使用Spring AI。

示例项目列表
  • Spring AI OpenAI 示例

    • GitHub 仓库
  • Spring AI Azure 示例

    • GitHub 仓库
  • Spring AI HuggingFace 示例

    • GitHub 仓库
  • Spring AI Milvus 示例

    • GitHub 仓库
如何使用示例项目
  1. 克隆仓库

    使用git clone命令克隆你感兴趣的示例项目:

    git clone https://github.com/spring-projects/spring-ai-openai-example.git cd spring-ai-openai-example 
  2. 配置依赖

    根据项目的README文件配置依赖项和环境变量。确保你已经配置好相关的API密钥和数据库连接。

  3. 运行项目

    使用Maven或Gradle构建并运行项目:

    ./mvnw spring-boot:run 

    或者

    ./gradlew bootRun 

结论

通过了解Spring AI支持的向量数据库和示例项目,你可以更好地在实际应用中应用Spring AI。这些向量数据库可以帮助你高效地存储和检索嵌入向量,而示例项目则提供了实际的代码示例,帮助你快速上手。希望这篇文章能帮助你在项目中应用这些技术,并激发你更多的创意。

在接下来的文章中,我们将继续探讨更多实际应用场景和高级功能,帮助你进一步掌握这一强大的工具。

Spring AI教程(二十四):接口设计与Testcontainers支持

在前面的文章中,我们讨论了Spring AI支持的向量数据库和一些示例项目。本篇文章将深入探讨Spring AI中的接口设计以及如何使用Testcontainers进行测试。

接口设计

Spring AI提供了多个接口,用于抽象和标准化与AI模型的交互。这些接口包括Model, StreamingModel, ModelRequestModelOptions。它们提供了一种灵活且可扩展的方法来与不同的AI模型进行交互。

Model接口

Model接口定义了与AI模型进行同步交互的通用API。它抽象了发送请求和接收响应的过程,使用Java泛型以适应不同类型的请求和响应。

public interface Model, TRes extends ModelResponse> {      /**      * 执行对AI模型的方法调用。      * @param request 发送到AI模型的请求对象      * @return 从AI模型接收到的响应      */     TRes execute(TReq request); } 
StreamingModel接口

StreamingModel接口提供了一个通用API,用于与具有流响应的AI模型进行交互。它抽象了发送请求和接收流响应的过程,使用Java泛型以适应不同类型的请求和响应。

public interface StreamingModel, TResChunk extends ModelResponse> {      /**      * 执行对AI模型的方法调用。      * @param request 发送到AI模型的请求对象      * @return 从AI模型接收到的流响应      */     Flux stream(TReq request); } 
ModelRequest接口

ModelRequest接口表示对AI模型的请求。该接口封装了与AI模型交互所需的必要信息,包括指令或输入(泛型类型T)以及其他模型选项。它提供了一种标准化的方式来发送请求,确保所有必要的细节都包括在内并且易于管理。

public interface ModelRequest {      /**      * 获取AI模型所需的指令或输入。      * @return AI模型所需的指令或输入      */     T getInstructions();      /**      * 获取AI模型交互的可定制选项。      * @return AI模型交互的可定制选项      */     ModelOptions getOptions(); } 
ModelOptions接口

ModelOptions接口表示AI模型交互的可定制选项。这个标记接口允许指定各种设置和参数,这些设置和参数可以影响AI模型的行为和输出。它旨在提供在不同AI场景中的灵活性和适应性,确保AI模型可以根据特定需求进行微调。

public interface ModelOptions {  } 

Testcontainers支持

Spring AI提供了Spring Boot自动配置,用于与通过Testcontainers运行的模型服务或向量存储建立连接。Testcontainers是一种用于在测试中启动和管理Docker容器的库。

添加Testcontainers依赖

要启用Testcontainers支持,在项目的Maven pom.xml文件中添加以下依赖项:

     org.springframework.ai     spring-ai-spring-boot-testcontainers  

或者在Gradle build.gradle构建文件中添加:

dependencies {     implementation 'org.springframework.ai:spring-ai-spring-boot-testcontainers' } 
Service Connections

spring-ai-spring-boot-testcontainers模块提供以下服务连接工厂:

Connection DetailsMatched on
ChromaConnectionDetailsContainers of type ChromaDBContainer
MilvusServiceClientConnectionDetailsContainers of type MilvusContainer
OllamaConnectionDetailsContainers of type OllamaContainer
QdrantConnectionDetailsContainers of type QdrantContainer
RedisConnectionDetailsContainers of type RedisStackContainer
WeaviateConnectionDetailsContainers of type WeaviateContainer

结论

通过理解Spring AI的接口设计和Testcontainers支持,你可以更好地在实际项目中应用Spring AI。接口设计提供了一种灵活且可扩展的方法来与不同的AI模型进行交互,而Testcontainers支持则简化了测试环境的配置和管理。希望这篇文章能帮助你在项目中应用这些技术,并激发你更多的创意。

在接下来的文章中,我们将继续探讨更多实际应用场景和高级功能,帮助你进一步掌握这一强大的工具。

相关内容

热门资讯

针对!wpk辅助哪里买,蜀山四... 针对!wpk辅助哪里买,蜀山四川怎么提高胜率,妙招教程(有挂教程)一、蜀山四川怎么提高胜率可以开透视...
五分钟辅助!扣点点脚本辅助器(... 五分钟辅助!扣点点脚本辅助器(辅助挂)好像存在有辅助技巧(有挂详情)扣点点脚本辅助器破解侠是真的助透...
出现新变化!pokerworl... 出现新变化!pokerworld软件,微乐家乡小程序辅助,课程教程(有挂透视)1、游戏颠覆性的策略玩...
第三分钟辅助!衢州罗松辅助器多... 第三分钟辅助!衢州罗松辅助器多少钱一个(辅助挂)切实真的是有辅助app(有挂存在)所有人都在同一条线...
事发当天!hhpoker是正规... 事发当天!hhpoker是正规的吗,微信多乐跑得快辅助工具,总结教程(有挂分享)1、全新机制【微信多...
1分钟辅助!新祥心有挂吗(辅助... 1分钟辅助!新祥心有挂吗(辅助挂)原来是真的辅助挂(确实有挂)1)新祥心有挂吗辅助插件:进一步探索新...
这一现象值得深思!wepoke... 这一现象值得深思!wepoker亲友圈有用吗,闲逸碰胡金钟罩,绝活教程(有挂细节)1、玩家可以在闲逸...
第二分钟辅助!创思维辅助器(辅... 第二分钟辅助!创思维辅助器(辅助挂)其实是真的辅助工具(真的有挂)1、用户打开应用后不用登录就可以直...
2026版总结!pokemom... 2026版总结!pokemomo辅助工具,奇迹掌趣辅助,大纲教程(有挂技术)1、奇迹掌趣辅助模拟器是...
6分钟辅助!微信小程序自动透视... 6分钟辅助!微信小程序自动透视微乐(辅助挂)切实存在有辅助软件(有挂秘籍)1、实时微信小程序自动透视...