vecs = embed(["Как вернуть деньги?", "Возврат средств за заказ", "Доставка курьером"])
cosine(vecs[0], vecs[1]) # высокое — близко по смыслу
cosine(vecs[0], vecs[2]) # низкое
Что важно знать
- Косинусное сходство — мера близости векторов; для нормированных векторов это скалярное произведение.
- Модель эмбеддингов выбирают по качеству на своём языке и домене: многие модели хорошо работают на английском и заметно хуже на русском. Ориентир — бенчмарки вроде MTEB с русскоязычными задачами.
- Документы и запросы должны кодироваться одной моделью; смена модели — переиндексация всего.
- Размерность влияет на память и скорость; некоторые модели позволяют обрезать вектор (Matryoshka).
- Эмбеддинги полезны не только для RAG: кластеризация обращений, поиск дублей, классификация, рекомендации.