Не текстът, а записът
В 11. клас правехме вектор на изречение. Тук обектът е ред от базата: стока, документ, обява, съобщение от клиент. Той има и текстови, и числови, и категорийни полета — а моделът за вектори приема само текст.
Какво да включим в текста
- Задължително — полетата, по които хората ще търсят: заглавие, описание, категория.
- Полезно — кратки етикети, които добавят контекст: марка, отдел, вид документ.
- Вредно — идентификатори, дълги кодове, дати в суров вид. Те не носят смисъл и разреждат вектора.
- Отделно — числата (цена, наличност) остават колони в базата и се използват за филтриране, не за близост.
Правилото за числата
Никога не разчитайте на векторите за числови условия. „под 200 лв.“ и „след 2023 г.“ се решават със WHERE в заявката, а смисловата част — с близост. Комбинацията от двете е урок 11.
Дългите текстове
Ограничението
Моделите за вектори имат таван на входа — често няколкостотин токена. Всичко над него мълчаливо се отрязва. Документ от 10 страници, подаден наведнъж, се превръща във вектор на първата си страница.
Решението
- Режем на парчета по естествени граници (както в урок 26 от 11. клас).
- Всяко парче получава свой вектор и свой ред в базата.
- Пазим връзка към документа-родител, за да се цитира правилно.
- При търсене намираме парчета, а показваме документи — с групиране по родител.
Заглавието във всяко парче
Полезен похват: към всяко парче се добавя заглавието на документа и името на раздела. Така парчето остава разбираемо само по себе си и близостта се подобрява осезаемо.
Изборът на модел за вектори
- Многоезичен ли е — задължително при български текст.
- Колко измерения има векторът: повече измерения означава повече място и по-бавно търсене.
- Работи ли локално или изисква външна услуга (цена и лични данни).
- Каква е максималната дължина на входа.
Смяната на модела е скъпа
Векторите от два различни модела не са съвместими. Смяната изисква повторно пресмятане на цялата колекция. Затова изборът се прави съзнателно и се записва — заедно с версията.
Кога да преизчисляваме
Векторът остарява, когато записът се промени. Затова в базата се пази и момент на изчисляване. При обновяване на описание векторът се преизчислява — иначе търсенето връща стари резултати за нов текст.