Бірлік 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:":"IK",0"2","0"бөлім. "privacy": "ic"})

# Метадеректер сүзілген іздеу (концептуалды)нәтижесі = vektor_db.search(vektor=embed("неше күн демалысым бар?"), top_k=4, filter={"бөлім": "HR", "құпиялық": ["ішкі", "қосулы"]})

Дұрыс мәліметтер қорын таңдау

көлік

Таңдалған аспект

Қолайлы жағдай

Кірістірілген/файл негізіндегі (ендірілген кітапхана)

Орнату жоқ, жалғыз машина

Прототип, шағын жинақ (< бірнеше жүз мың бөлік)

Басқарылатын бұлттық қызмет

Масштабтау және техникалық қызмет көрсету сіздің жауапкершілігіңіз емес

Өндіріс, жылдам өсіп келе жатқан деректер, шағын команда

Өз серверіңізде ашық дереккөз

Толық бақылау, деректеріңіз сіздікі болып қалады

Құпиялылық міндеттемесі, бар инфрақұрылым

Қолданыстағы дерекқорға қосу

Сіз бөлек жүйелерді басқара алмайсыз

Сіз пайдаланып жатқан ДҚ-ға векторлық қолдауды қосу

Таңдау кезінде сұраңыз: неше бөлік болады? Метадеректерді сүзу қаншалықты маңызды? Деректер компанияның сыртына шыға ала ма (құпиялылық)? Команда инфрақұрылымды басқара ала ма? Кішкентайдан бастап, қажетінше кеңейту жиі ақылды.

Әлсіз тәсіл / Күшті көзқарас

Әлсіз (қарапайым ендіруді сақтау, метадеректер жоқ):

Тек мәтінді және векторды сақтаңыз. Іздеу: ең ұқсас 4 векторды қайтарыңыз. # Мәселе: "тек ағымдағы HR құжаттары" сияқты сүзгілеу мүмкін емес;# ескі/рұқсат етілмеген бөліктер де жауапқа қосылуы мүмкін.

Күшті (бай метадеректер + сүзілген іздеу):

Әрбір бөлікке дереккөзді, күнді, бөлімді және құпиялылық тегін қосыңыз. Іздеу кезінде пайдаланушының өкілеттігі мен ағымдағылығына қарай сүзгілеу: filter = {"privacy": user_authority, "date_date": "2024-01"}# Осылайша, нәтиже қауіпсіз және жаңартылған.

Үш шағын корпус

1-жағдай – Қате үлгі қоспасы. Топ А үлгісі бар құжаттарды және В үлгісіндегі сұрақтарды ендірді. Іздеулер мағынасыз нәтиже берді және дұрыс жауап деңгейі 31% деңгейінде қалды. Мен бір үлгіге (екеуі де бірдей ендірілген үлгіге) ауысқанда, көрсеткіш 88% дейін көтерілді. Сабақ: сұрақ пен құжат бір кеңістікте болуы керек.

2-жағдай — метадеректерсіз құпиялылық қаупі. Денсаулық сақтау компаниясында барлық бөлім құжаттары метадеректерсіз бір пулға тасталды. Сатушы сұрақ қойғанда, жүйе емделуші деректерінің бір бөлігін контекстендірді. Метадеректер + сүзгісі қосылған кезде (авторизация деңгейіне сәйкес) бұл қауіп жойылды; Іздеу кезінде рұқсат етілмеген 12 дана мүлде әкелінбейді.

3-жағдай – Шкаланың тар жолы. Электрондық коммерция компаниясы қарапайым «барлығын сканерлеу» әдісімен 8 миллион өнім сипаттамасын іздеді; Әрбір сұрау 6 секундқа созылды. Біз HNSW негізіндегі ANN жүйесіне ауысқан кезде уақыт 45 миллисекундқа дейін қысқарды, дәлдік тек 1% жоғалтты. Сабақ: ANN үлкен жиынтықта міндетті болып табылады.

Жалпы қателер

  • Сұрақ пен құжатты әртүрлі үлгілермен ендіру: Нәтижелер мағынасыз; әрқашан бір үлгі.
  • Метадеректерді өткізіп жіберу: сүзгілеу мүмкін емес; Құпиялылық пен жаңартуды бақылауды жоғалтасыз.
  • Енгізуді шифрлау үшін қателесу: Енгізу қайтымды ақпаратты тасымалдайды; Құпия деректер «жасырын» деп болжау дұрыс емес.
  • Кішігірім жиынтықта қажетсіз үлкен инфрақұрылымды құру: 5000 бөлікке басқарылатын алып кластер - бұл қажетсіз күрделілік.
  • Ұқсастық критерийі туралы көп алаңдамаңыз: Мәтіндегі косинустан бастаңыз; Нақты баптау кейінірек келеді.
Абайлаңыз: ендіру мәтіннің мағынасын сандармен енгізеді, бірақ мазмұнды «жоймайды». Егер векторлық дерекқор ағып кетсе, түпнұсқа сақталған мәтіндер (көптеген орнатуларда мәтін де сақталады) бұзылады. Векторлық репозиторийді оның ішіндегі құжаттар сияқты құпия сақтаңыз.

Қысқаша айтқанда

  • Енгізу мәтінді оның мағынасын беретін сандар векторына айналдырады; Ұқсас мағыналар жақын векторлар болып табылады.
  • Ұқсастық көбінесе косинуспен өлшенеді; Нормаланған векторлар үшін нүктелік көбейтінді бірдей нәтиже береді.
  • Үлкен деректерде ANN (мысалы, HNSW) дәл іздеуді ауыстырады: дәлдік аз құрбандықпен үлкен жылдамдық.
  • Векторлық деректер базасы векторлық сақтауды + ұқсастықты іздеуді + метадеректерді сүзуді орындайды; метадеректер кәсіпорын RAG үшін маңызды.
  • Сұрақ пен құжат бірдей ендіру үлгісімен аударылуы керек; әйтпесе координаттарды салыстыруға болмайды.

Қолданбалы тапсырма

Алдыңғы бөлімде таңдаған құжаттан 10 қысқа үзінді (әрқайсысы 3-6 сөйлем) шығарып алыңыз. (1) Әрбір бөлік үшін кемінде үш метадеректер тегтерін құрастырыңыз (көзі, күні және бизнес контекстіңізге сәйкес үшінші: бөлім, өнім, құпиялылық, т.б.). (2) 3 түрлі пайдаланушы сұрағына қандай метадеректер сүзгісі қолданылуы керек екенін жазыңыз. (3) Бір мағынаны әртүрлі сөздермен білдіретін 3 сұрақ бөлігінің жұбын табыңыз (мысалы, «демалыс құқығы» ↔ «жыл сайынғы демалыс») және бір сөйлеммен неге олар кілт сөзді іздеуге сәйкес келмейтінін, бірақ ендіруге сәйкес келетінін түсіндіріңіз.

бақылау парағы

  • [ ] Ендіру мәтінді семантикалық кеңістіктегі векторға айналдыратынын және ұқсас мағыналардың жақын екенін айта аламын.
  • Мен [ ] косинус ұқсастығы бұрышты өлшейтінін және мәтіндегі әдепкі параметр екенін білемін.
  • [ ] Мен үлкен деректерде ANN не үшін қажет екенін түсіндіре аламын.
  • [ ] Мен метадеректер неліктен құпиялылық пен жаңалықты бақылау үшін маңызды екенін білемін.
  • [ ] Мен сұрақ пен құжатты бірдей ендіру үлгісімен аудару ережесін ұстанамын.