Spring AI教程(二十三):向量数据库支持与示例项目 | Spring AI教程(二十四):接口设计与Testcontainers支持
通过理解Spring AI的接口设计和Testcontainers支持,你可以更好地在实际项目中应用Spring AI。接口设计提供了一种灵活且可扩展的方法来与不同的AI模型进行交互,而Testcontainers支持则简化了测试环境的配置和管理。通过了解Spring AI支持的向量数据库和示例项目,你可以更好地在实际应用中应用Spring AI。在前面的文章中,我们详细介绍了Spring AI支
Spring AI教程(二十三):向量数据库支持与示例项目
在前面的文章中,我们详细介绍了Spring AI支持的各种模型,包括聊天模型、图像生成模型和音频处理模型。本篇文章将探讨Spring AI支持的向量数据库以及一些示例项目,帮助你更好地应用Spring AI。
向量数据库支持
Spring AI支持多种向量数据库,用于存储和检索嵌入向量。这些数据库可以帮助你在实际应用中高效地处理大规模的向量数据。
向量数据库API
Spring AI提供了一个统一的向量数据库API,你可以通过这个API与各种向量数据库交互。以下是Spring AI支持的主要向量数据库:
-
Azure Vector Search
-
Chroma Vector Store
-
Milvus Vector Store
-
Neo4j Vector Store
-
PgVector Store
-
Pinecone Vector Store
-
Qdrant Vector Store
-
Redis Vector Store
-
Weaviate Vector Store
-
Simple Vector Store
- Simple Vector Store 源码
- 这是一个简单的(内存中)持久向量存储实现,适合教育目的。
示例项目
你可以克隆这些GitHub上的示例项目,了解如何在实际应用中使用Spring AI。
示例项目列表
-
Spring AI OpenAI 示例
-
Spring AI Azure 示例
-
Spring AI HuggingFace 示例
-
Spring AI Milvus 示例
如何使用示例项目
-
克隆仓库
使用
git clone
命令克隆你感兴趣的示例项目:git clone https://github.com/spring-projects/spring-ai-openai-example.git cd spring-ai-openai-example
-
配置依赖
根据项目的
README
文件配置依赖项和环境变量。确保你已经配置好相关的API密钥和数据库连接。 -
运行项目
使用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
, ModelRequest
和 ModelOptions
。它们提供了一种灵活且可扩展的方法来与不同的AI模型进行交互。
Model接口
Model
接口定义了与AI模型进行同步交互的通用API。它抽象了发送请求和接收响应的过程,使用Java泛型以适应不同类型的请求和响应。
public interface Model<TReq extends ModelRequest<?>, TRes extends ModelResponse<?>> {
/**
* 执行对AI模型的方法调用。
* @param request 发送到AI模型的请求对象
* @return 从AI模型接收到的响应
*/
TRes execute(TReq request);
}
StreamingModel接口
StreamingModel
接口提供了一个通用API,用于与具有流响应的AI模型进行交互。它抽象了发送请求和接收流响应的过程,使用Java泛型以适应不同类型的请求和响应。
public interface StreamingModel<TReq extends ModelRequest<?>, TResChunk extends ModelResponse<?>> {
/**
* 执行对AI模型的方法调用。
* @param request 发送到AI模型的请求对象
* @return 从AI模型接收到的流响应
*/
Flux<TResChunk> stream(TReq request);
}
ModelRequest接口
ModelRequest
接口表示对AI模型的请求。该接口封装了与AI模型交互所需的必要信息,包括指令或输入(泛型类型T
)以及其他模型选项。它提供了一种标准化的方式来发送请求,确保所有必要的细节都包括在内并且易于管理。
public interface ModelRequest<T> {
/**
* 获取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
文件中添加以下依赖项:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-spring-boot-testcontainers</artifactId>
</dependency>
或者在Gradle build.gradle
构建文件中添加:
dependencies {
implementation 'org.springframework.ai:spring-ai-spring-boot-testcontainers'
}
Service Connections
spring-ai-spring-boot-testcontainers
模块提供以下服务连接工厂:
Connection Details | Matched on |
---|---|
ChromaConnectionDetails | Containers of type ChromaDBContainer |
MilvusServiceClientConnectionDetails | Containers of type MilvusContainer |
OllamaConnectionDetails | Containers of type OllamaContainer |
QdrantConnectionDetails | Containers of type QdrantContainer |
RedisConnectionDetails | Containers of type RedisStackContainer |
WeaviateConnectionDetails | Containers of type WeaviateContainer |
结论
通过理解Spring AI的接口设计和Testcontainers支持,你可以更好地在实际项目中应用Spring AI。接口设计提供了一种灵活且可扩展的方法来与不同的AI模型进行交互,而Testcontainers支持则简化了测试环境的配置和管理。希望这篇文章能帮助你在项目中应用这些技术,并激发你更多的创意。
在接下来的文章中,我们将继续探讨更多实际应用场景和高级功能,帮助你进一步掌握这一强大的工具。
更多推荐
所有评论(0)