Solon#
Solon - легкий высокопроизводительный Java-фреймворк для предприятий, предназначенный для эффективного и экологичного развития. Он улучшает параллелизм, снижает потребление памяти, ускоряет запуск, минимизирует размер упаковки и поддерживает версии от Java 8 до Java 23, предлагая гибкую альтернативу Spring.
Vector DB доступен в качестве компонента в Solon-AI для эффективной векторной индексации и поиска.
Установка#
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-ai-repo-qdrant</artifactId>
</dependency>
Это основной расширяющий плагин для solon-ai, который предоставляет базу знаний QdrantRepository.
Конфигурация#
При использовании QdrantRepository необходимо настроить модель встраивания.
solon.ai.embed:
bgem3:
apiUrl: "http://127.0.0.1:11434/api/embed"
provider: "ollama"
model: "bge-m3:latest"
solon.ai.repo:
qdrant:
host: "localhost"
port: 6334
useSsl: false
Теперь можно создать экземпляр модели встраивания и Vector DB.
@Configuration
public class DemoConfig {
// Create the embedding model
@Bean
public EmbeddingModel embeddingModel(@Inject("${solon.ai.embed.bgem3}") EmbeddingConfig config) {
return EmbeddingModel.of(config).build();
}
// Configure the QdrantClient using QdrantGrpcClient
@BindProps(prefix = "solon.ai.repo.qdrant")
@Bean
public QdrantClient qdrantClient(@Value("${solon.ai.repo.qdrant.host}") String host,
@Value("${solon.ai.repo.qdrant.port}") int port,
@Value("${solon.ai.repo.qdrant.useSsl}") boolean useSsl) {
return new QdrantClient(
QdrantGrpcClient.newBuilder(host, port, useSsl).build()
);
}
// Initialize the Qdrant knowledge base
@Bean
public QdrantRepository repository(EmbeddingModel embeddingModel, QdrantClient client) {
return new QdrantRepository(embeddingModel, client);
}
}
Использование#
@Component
public class DemoService {
@Inject
private QdrantRepository repository;
// Add documents to the repository
public void addDocument(List<Document> docs) {
repository.insert(docs);
}
// Search for documents based on a query
public List<Document> findDocument(String query) {
return repository.search(query);
}
}