SimilaritySearch: поиск по векторам
SimilaritySearch — встроенный инструмент AI SDK для поиска документов по векторной близости.
Создание через модель
use App\Models\Document;
use Laravel\Ai\Tools\SimilaritySearch;
public function tools(): iterable
{
return [
SimilaritySearch::usingModel(Document::class, 'embedding'),
];
}
Первый аргумент — Eloquent-модель. Второй — колонка с векторами.
Как работает
- Агент получает запрос пользователя
- SimilaritySearch генерирует embedding для запроса
- Выполняет векторный поиск в БД
- Возвращает релевантные документы агенту
- Агент использует их для ответа
Порог схожести
SimilaritySearch::usingModel(Document::class, 'embedding')
->minSimilarity(0.4),
minSimilarity — от 0.0 до 1.0. 1.0 — идентичные документы.
Query callback
SimilaritySearch::usingModel(Document::class, 'embedding')
->query(fn ($query) => $query->where('published', true)),
Кастомизация запроса к БД.
Низкоуровневый поиск
Без инструмента, напрямую в Eloquent:
$documents = Document::query()
->whereVectorSimilarTo('embedding', 'best wineries in Napa Valley')
->limit(10)
->get();
Laravel сам сгенерирует embedding для строки.
С контролем
$documents = Document::query()
->select('*')
->selectVectorDistance('embedding', $queryEmbedding, as: 'distance')
->whereVectorDistanceLessThan('embedding', $queryEmbedding, maxDistance: 0.3)
->orderByVectorDistance('embedding', $queryEmbedding)
->limit(10)
->get();
RAG: полный цикл
- Пользователь загружает документ
- Embedding генерируется в фоне (
->queue()) - Вектор сохраняется в БД
- Агент с SimilaritySearch ищет по запросу
- Возвращает релевантные фрагменты
Загрузка документов
use Laravel\Ai\Files\Document;
$file = Document::fromPath('/path/to/doc.pdf')->put();
Vector Stores
use Laravel\Ai\Stores;
$store = Stores::create('Knowledge Base');
$store->add($file->id);
$store->add(Document::fromStorage('manual.pdf'));
Итоги
- SimilaritySearch — встроенный tool
usingModel()для подключенияminSimilarityдля порогаwhereVectorSimilarToдля прямого поиска- RAG = загрузка + embedding + поиск
- Vector Stores для управления