Единица 2 / 11

Логика за вградување и векторска база на податоци

Добивки:

  • Разберете дека вградувањето го претвора текстот во вектор во семантичкиот простор и слични значења се блиски вектори
  • Објаснување како функционира пребарувањето ANN со метрика на сличност со косинус и точки
  • Избор на заеднички векторски бази на податоци врз основа на трошоците, обемот и потребата за филтрирање на метаподатоци

Во срцето на RAG е едно прашање: „Кое парче текст е најмногу слично на прашањето на корисникот? Компјутерот го обработува текстот со бројки, не буквално. Затоа треба прво да го претвориме текстот во бројки кои го носат неговото значење. Тоа е она што е вградување: процес на претворање на текст во низа од броеви (вектор) што го претставува значењето на тој текст. Кога ќе ја завршите оваа единица, ќе знаете како функционира вградувањето, како се мери сличноста и како да ја изберете вистинската векторска база на податоци.

Вградување: Преведување на значењето во координати

Модел за вградување (специјално обучена вештачка интелигенција) го претвора текстот што го давате во вектор од, на пример, 1024 броеви. Замислете го овој вектор како координата во повеќедимензионален простор. Магијата е оваа: текстовите кои се слични по значење спаѓаат во блиски координати во овој простор.

Едноставен пример: „годишно отсуство“, „право за годишен одмор“ и „годишно платено отсуство“ користат различни зборови, но значат исто - нивните вектори се блиску еден до друг. „Сметка на платен список“ е друга работа - нејзиниот вектор е далечен. Така корисникот прашува "колку дена одмор имам?" Кога ќе прашате, можеме дури и да најдеме документ кој не го содржи зборот „празник“ туку вели „годишен одмор е 14 дена“. Ова е она што класичното пребарување на клучни зборови (пребарување што точно одговара на зборот) не може да го направи.

Совет: замислете го вградувањето како „отпечаток на значењето“. Отпечатоците на две реченици со исто значење изгледаат слично; Дури и ако зборовите се различни.

Важно правило: моделот што го користите при вградување на прашањето треба да биде истиот модел што го користите при вградување документи. Различни модели произведуваат различни простори; координатите стануваат неспоредливи.

Како да се измери сличноста?

Постојат неколку методи за мерење колку се слични два вектори. Најчеста е косинусната сличност: го мери аголот помеѓу два вектори. Ако аголот е мал (векторите насочени во иста насока), сличноста е голема. Вредноста е помеѓу −1 и 1; Блиску до 1 = многу слично.

критериум

Што мери?

Кога се претпочита?

Косинусот

Агол (насока) помеѓу вектори

Најчести; стандардна семантичка сличност во текстот

Производ со точки

Насока + величина заедно

Ако векторите се нормализираат, тоа го дава истиот резултат како косинус; е брз

Евклидско (евклидово растојание)

Право растојание помеѓу координатите

Во некои сценарија за кластерирање; помалку користен во текстот

Во пракса, повеќето модели за вградување произведуваат нормализирани вектори (големина поставена на 1); Во овој случај, косинус и производ со точки го даваат истиот редослед. Немојте да бидете парализирани во одлуката: започнете со косинус.

Помеѓу милиони вектори, нивното споредување еден по еден е бавно. Затоа векторските бази на податоци користат ANN (Approximate Nearest Neighbor) алгоритми. ANN многу брзо наоѓа „речиси најблиску“ наместо „точно најблиску“. На пример, методот наречен HNSW може да врати резултати за неколку милисекунди дури и за 10 милиони вектори. Добивате голема брзина за мала жртва на точноста.

Што прави векторската база на податоци?

Векторската база на податоци прави три работи одеднаш: (1) складира вектори, (2) брзо наоѓа вектори кои се најслични на вектор за барање, (3) филтрира по метаподатоци до секој вектор. Метаподатоците се ознаките што ги прикачувате на тој дел: изворна датотека, датум, оддел, ниво на приватност итн. Филтрирањето на метаподатоци е критично во претпријатието RAG; затоа што треба да можете да поставите ограничувања како „пребарувајте само во документите на Одделот за финансии за 2025 година“.

# Регистрирајте се во векторската база на податоци (концептуална)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Годишниот платен одмор е 14 дена..."), text="Годишниот платен одмор е 14 дена...", metadata={"извор": "ik_el_kitabi.pdf": "ИК" „2025-06“, „приватност“: „ic“})

# Пребарување со филтрирани метаподатоци (концептуално)резултат = vektor_db.search( vektor=embed("колку дена одмор имам?"), top_k=4, filter={"оддел": "HR", "приватност": ["внатрешно", "вклучено"]})

Избор на вистинската база на податоци

возилото

Истакнат аспект

Соодветна ситуација

Вградена / базирана на датотеки (вградена библиотека)

Без инсталација, една машина

Прототип, мал комплет (< неколку стотици илјади делови)

Управувана облак услуга

Сметањето и одржувањето не се ваша одговорност

Производство, брзо растечки податоци, мал тим

Отворен код на вашиот сопствен сервер

Целосна контрола, вашите податоци остануваат ваши

Обврска за приватност, постоечка инфраструктура

Дополнување на постоечката база на податоци

Вие не управувате со посебни системи

Додавање векторска поддршка на DB што веќе ја користите

Прашајте при изборот: Колку парчиња ќе има? Колку е критично филтрирањето на метаподатоци? Дали податоците можат да излезат надвор од компанијата (доверливост)? Дали тимот може да управува со инфраструктура? Често е мудро да започнете со мали димензии и да се проширите по потреба.

Слаб пристап / силен пристап

Слаб (се складира обична вградување, без метаподатоци):

Само зачувајте го текстот и векторот. Пребарување: вратете ги 4-те најслични вектори.# Проблем: не може да се филтрира како „само тековните HR документи“;# стари/неовластени делови исто така може да бидат вклучени во одговорот.

Моќни (богати метаподатоци + филтрирано пребарување):

Додајте извор, датум, оддел и ознака за приватност на секое парче. Филтрирајте според авторитетот и моментноста на корисникот за време на пребарувањето: filter = {"privacy": user_authority, "date_date": "2024-01"}# Така, резултатот е и безбеден и ажуриран.

Три мини футроли

Случај 1 - Погрешен микс на модели. Тим вгради документи со модел А и прашања со модел Б. Пребарувањата дадоа бесмислени резултати, а стапката на точни одговори остана на 31%. Кога се префрлив на еден модел (и двата исти модел за вградување), стапката скокна на 88%. Лекција: прашањето и документот треба да бидат на ист простор.

Случај 2 - Ризик за приватност без метаподатоци. Во една здравствена компанија, сите документи на одделот беа фрлени во еден базен без метаподатоци. Кога продажниот соработник постави прашање, системот контекстуализираше дел од податоците за пациентот. Кога беа додадени метаподатоци + филтер (според нивото на авторизација), овој ризик беше елиминиран; При извлекување, 12 неовластени парчиња воопшто не се носат.

Случај 3 - Тесно грло на скала. Компанија за е-трговија пребарувала 8 милиони описи на производи со едноставен метод „скенирајте ги сите“; Секое барање траеше 6 секунди. Кога се префрливме на ANN базирана на HNSW, времето се намали на 45 милисекунди, со само 1% загуба во точноста. Лекција: ANN е задолжителна во големиот сет.

Вообичаени грешки

  • Вградување на прашањето и документот со различни модели: Резултатите се бесмислени; секогаш еден модел.
  • Прескокнување на метаподатоци: не можете да филтрирате; Ја губите контролата врз приватноста и ажурираноста.
  • Погрешно вметнување за шифрирање: Вградувањето носи реверзибилни информации; Погрешно е да се претпостави дека чувствителните податоци се „скриени“.
  • Градење непотребно голема инфраструктура на мал сет: џиновски кластер управуван за 5.000 делови е непотребна сложеност.
  • Не грижете се премногу за критериумот за сличност: Започнете со косинус во текстот; Финото подесување доаѓа подоцна.
Внимание: Вградувањето го вметнува значењето на текстот во бројки, но не ја „уништува“ содржината. Ако протече векторска база на податоци, оригиналните зачувани текстови (во повеќето инсталации и текстот е зачуван) се исто така компромитирани. Чувајте го векторското складиште исто толку доверливо како и документите во него.

Сумирано

  • Вградувањето го претвора текстот во вектор на броеви што го носи неговото значење; Слични значења се блиски вектори.
  • Сличноста често се мери со косинус; За нормализирани вектори, производ со точки го дава истиот резултат.
  • Во големите податоци, ANN (на пример, HNSW) го заменува точното пребарување: голема брзина со мала жртва на точноста.
  • Векторската база на податоци врши векторско складирање + пребарување сличност + филтрирање на метаподатоци; метаподатоците се од суштинско значење за RAG на претпријатието.
  • Прашањето и документот мора да бидат преведени со ист модел на вградување; во спротивно координатите не можат да се споредат.

Задача за апликација

Извадете 10 кратки пасуси (по 3-6 реченици) од документот што го избравте во претходната единица. (1) Дизајнирајте најмалку три ознаки за метаподатоци за секое парче (извор, датум и трета соодветна на вашиот деловен контекст: оддел, производ, приватност итн.). (2) Напишете кој филтер за метаподатоци треба да се примени за 3 различни кориснички прашања. (3) Најдете 3 парови со прашања од делови кои го изразуваат истото значење со различни зборови (на пр. „право за годишен одмор“ ↔ „годишен одмор“) и објаснете во една реченица зошто тие нема да одговараат на пребарувањето на клучни зборови, но ќе одговараат на вметнувањето.

листа за проверка

  • [ ] Можам да кажам дека вградувањето го претвора текстот во вектор во семантичкиот простор и слични значења се блиски.
  • Знам дека [ ] косинусната сличност го мери аголот и е основната претпочитаност во текстот.
  • [ ] Можам да објаснам зошто ANN е неопходен во големите податоци.
  • [ ] Знам зошто метаподатоците се клучни за доверливост и контрола на свежината.
  • [ ] Го следам правилото за преведување на прашањето и документот со ист модел на вградување.