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);
    }
}

Дополнительная документация#

  • Документация к Solon.

  • Исходный код Solon.