Comments 16
Сейчас рассматриваю OpenSearch (форк ElasticSearch), видел там в документации раздел по работе с векторами слов. Это оно самое, о чем речь в статье?
ElasticSearch предлагает возможности для работы с векторами. Не уверен, что все из них могут быть доступны бесплатно. Идейно это оно)
ИМХО смысла использовать OpenSearch нет, кроме как вместе с AWS OpenSearch. Во всем остальном Elastic лучше.
В OpenSearch и ElasticSearch используются различные реализации векторного индекса и разные схемы ранжирования при гибридном поиске. Год назад у ElasticSearch было ограничение на размер векторов не более 1500. Сейчас, вроде, уже 4096. То есть, Amazon была проворнее в разработке.
Если размещать приложения на AWS, то OpenSearch однозначно. В остальных случаях есть о чём думать.
Спасибо за интересную статью!
В одном из проектов для поиска по огромной базе FAQ сделал такую систему:
Для эмбеддингов использую Ada от OpenAi. Сначала «индексация» - векторизирую все вопросы и складываю в Qdrant;
Затем при по поиске - векторизирую вопрос пользователя и ищу 10 ближайших векторов, по которым нахожу ответы.
Вопрос, что будет работать также хорошо как Ada, но на моем сервере?
Надо измерять качество, но можно попробовать либо SLM (small language model) как, например, phi-3 или all-mini-lm-xxx, либо вообще попробовать натренировать что-то своё. Ну и сюда заглянуть можно https://huggingface.co/spaces/mteb/leaderboard
Как эффективно работает удаление вектора из базы? Нужна ли переиндексация ?
Это зависит от конкретной базы данных и от выбранного типа индекса, лучше уточнять в документации или смотреть исходники. Например, для weaviate и индекса HNSW используются tombstones https://github.com/weaviate/weaviate/blob/main/adapters/repos/db/vector/hnsw/delete.go и позднее очищаются https://github.com/weaviate/weaviate/blob/b59527994a85d35664bec7eb5acc8fa628318a86/adapters/repos/db/vector/hnsw/delete.go#L116-L167
Статья отличная, никогда не работав с векторами, я даже всё понял. Но принцесса Лейла - это провал :)
pgvector упомянули, но как-то не развили. А тренд сейчас такой, что любая традиционная СУБД скоро будет иметь векторный индекс с приближенным поиском. Именно для того, чтобы команде разработчиков не надо было изучать новые сторонние инструменты. Собственно, PostgreSQL, Clickhouse, MariaDB, Cassandra уже их имеют. И во всех случаях - доступ к ним через язык SQL. В некоторых случаях, типа Snowflake Cortex, есть даже доступ к языковым моделям прямо через SQL.
+ https://superlinked.com/vector-db-comparison/
Допустим, в источнике написано, что событие произошло:
- в 1897 году
- в одна тысяча восемьсот девяносто седьмом году
- в конце 19 века.
А теперь приходит пользователь с вопросом:
"ищу событие наступившее за несколько лет до наступления XX века."
Как там векторы отработают?
Подскажите, где можно почитать простымии словами с примерами объяснение работы этой магии преобразования слов в вектора?
Векторные базы данных: простым языком про устройство и принцип работы