VectorSearchService.php
- Pfad:
src/Infrastructure/AI/VectorSearchService.php - Namespace: Infrastructure\AI
- Zeilen: 62 | Größe: 1,723 Bytes
- Geändert: 2025-12-23 08:00:15 | Gescannt: 2025-12-31 10:22:15
Code Hygiene Score: 100
- Dependencies: 100 (25%)
- LOC: 100 (20%)
- Methods: 100 (20%)
- Secrets: 100 (15%)
- Classes: 100 (10%)
- Magic Numbers: 100 (10%)
Keine Issues gefunden.
Dependencies 2
- constructor Infrastructure\AI\OllamaService
- constructor Infrastructure\AI\QdrantService
Klassen 1
-
VectorSearchServiceclass Zeile 9
Funktionen 4
-
__construct()public Zeile 14 -
search()public Zeile 29 -
isAvailable()public Zeile 49 -
getEmbedding()public Zeile 57
Verwendet von 3
- ChatServiceProvider.php use
- SemanticExplorerController.php constructor
- SemanticExplorerController.php use
Versionen 1
-
v1
2025-12-23 08:00 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation
Code
<?php
declare(strict_types=1);
namespace Infrastructure\AI;
// @responsibility: Einheitliche Schnittstelle für semantische Suche
class VectorSearchService
{
private OllamaService $ollama;
private QdrantService $qdrant;
public function __construct(?OllamaService $ollama = null, ?QdrantService $qdrant = null)
{
$this->ollama = $ollama ?? new OllamaService();
$this->qdrant = $qdrant ?? new QdrantService();
}
/**
* Perform semantic search using embedding + vector search
*
* @param string $query Search query text
* @param string $collection Qdrant collection name
* @param int $limit Maximum results to return
* @param string $embeddingModel Ollama model for embeddings
* @return array Search results with scores and payloads
*/
public function search(
string $query,
string $collection = 'documents',
int $limit = 10,
string $embeddingModel = 'mxbai-embed-large'
): array {
// Generate embedding for query
$embedding = $this->ollama->getEmbedding($query, $embeddingModel);
if (empty($embedding)) {
return [];
}
// Search in Qdrant
return $this->qdrant->search($embedding, $collection, $limit);
}
/**
* Check if both services are available
*/
public function isAvailable(): bool
{
return $this->ollama->isAvailable() && $this->qdrant->isAvailable();
}
/**
* Get embedding for text (useful for debugging/testing)
*/
public function getEmbedding(string $text, string $model = 'mxbai-embed-large'): array
{
return $this->ollama->getEmbedding($text, $model);
}
}