Бірлік 4 / 11

Іздеу стратегиялары: Top-k, Hybrid, Re-ranking

Табыстар:

  • Top-k таңдауын және семантикалық және кілт сөзді іздеуді біріктіретін гибридті іздеуді енгізу
  • Бірінші іздеудің дәлдігін қайта рейтинг арқылы арттыру
  • Сұрауларды түрлендіру және HyDE сияқты әдістермен қиын сұрақтарды іздеуге болады

Сіз құжаттарды жақсылап ұсақтап, векторлық дерекқорға қойдыңыз. Енді нақты жұмыс: пайдаланушы сұрақ қойған кезде дұрыс бөліктерді алу. Бұл іздеу деп аталады және RAG сапасының негізі болып табылады. «Қабылдау сапасы = RAG сапасы» деген сөйлемді есте сақтаңыз; Бұл бірлік дәл сол сапаны жақсарту өнері. Біз топ-k таңдаудан гибридтік іздеуге дейін, қайта рейтингтен сұрауды түрлендіруге дейінгі практикалық әдістерді қарастырамыз.

Top-k: Біз қанша дана әкелеміз?

Ең негізгі параметр: іздеуден қайтарылатын қанша дана (k). Егер сіз аз әкелсеңіз (k=1) дұрыс бөлікті жоғалтып алу қаупі жоғары; Егер сіз тым көп қоссаңыз (k=20), ол модельге шуды қосады және токен құны артады.

Екі ұғымды ажырату. Еске түсіру: дұрыс бөліктің шығарылғандар арасында болатын жылдамдығы. Дәлдік: алынатын нәрсенің сәйкес келетін жылдамдығы. k көбейту еске түсіруді арттырады, бірақ дәлдікті төмендетеді. Мақсат - екеуін теңестіру.

top-k

Әсер

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

1-3

Жоғары дәлдік, жіберіп алу қаупі

Қарапайым, бір жауап беретін сұрақтар

4-8

Баланс; көптеген сценарийлер

Жалпы корпоративтік RAG

10-20

Еске алу жоғарырақ болса, шу артады

Қайта рейтингпен (төменде)

Кеңес: Жалпы және күшті үлгі: кең (k=20), содан кейін қайта рейтингпен тарылту (жоғарғы 4). Осылайша сіз ештеңені жіберіп алмайсыз және үлгіге таза контекст бересіз.

Гибридті іздеу: екі іздеудің күші

Семантикалық (векторлық) іздеу мағынаны табады, бірақ нәрселерді жіберіп алады: толық өнім коды («XR-4471»), сирек аббревиатура, тиісті атау, нұсқа нөмірі. Осы дәл сәйкестік тапсырмалары үшін ескі мектеп кілт сөздерін іздеу - әсіресе BM25 деп аталатын классикалық алгоритм - өте жақсы.

Гибридті іздеу екеуін біріктіреді: семантикалық және кілт сөзді іздеу нәтижелерді біріктіреді. Осылайша, мәселеде «Кепілдік мерзімі

Біріктіру әдетте RRF (Reciprocal Rank Fusion) көмегімен орындалады: екі тізімде де жоғары тұрған трек алға шығады.

# Гибридті іздеу (концептуалды)сем = вектор_іздеу(сұрақ, k=20) # мағыналық кілт = bm25_іздеу(сұрақ, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # екеуін біріктіру, жоғарғы 8

Қайта рейтинг: Екінші және ақылды өту

Бірінші қоңырау жылдам, бірақ дөрекі болуы мүмкін. Бірінші іздеу нәтижесінде қайтарылған үміткерлерді бір-бірден күштірек үлгімен (әдетте кросс-кодер — сұрақты және үзіндіні бірге оқитын және өзектілігін бағалайтын модель) қайта рейтингтейді және ең өзектілерін жоғарыға жылжытады.

Логика мынада: бірінші іздеу кері шақыруға үміткерлердің көп санын тағайындайды (20 үміткер), қайта ранжирлеуші ​​дәлдік үшін ең жақсы 4-ті таңдайды. Бұл екі сатылы тәсіл бір сатылы іздеуге қарағанда әлдеқайда дәл. Бұл біраз кешіктіруге және қосымша өңдеуге кетеді; Пайда сапаның айтарлықтай артуы болып табылады.

# Екі кезеңді іздеу (концептуалды) үміткерлер = гибридтік_іздеу(сұрақ, k=20) # кең, жылдам ұпай = reranker.score(сұрақ, кандидаттар) # әрбір кандидат контекстіне қатысты сәйкестік ұпайы = rated.rank()[:4] # жоғарғы 4

Сұрауды түрлендіру

Кейде мәселе іздеуде емес, сұрақтың өзінде болады. Егер пайдаланушы «қашықтағы жұмысшылар туралы ше?» Деп сұраса. ', мұны жалғыз іздеу мүмкін емес (қашықтағы жұмысшылар үшін не екені белгісіз). Міне, сұрауды түрлендіру әдістері:

  • Қайта жазу: «Қашықтағы қызметкерлердің жыл сайынғы еңбек демалысына қандай құқығы бар?» Деген сұрақты дербес ету үшін әңгіме тарихын пайдаланыңыз.
  • Көп сұрау: бір сұрақтың 3 түрлі өрнектерін жасаңыз, олардың барлығымен іздеңіз, нәтижелерді біріктіріңіз. Әртүрлі сөздер әртүрлі бөліктерді табады.
  • HyDE (Hypothetical Document Enbeddings): Алдымен үлгіге «мүмкін жауапты» басып шығарыңыз, содан кейін сол ойдан шығарылған жауапты ендіріп, іздеңіз. Ойдан шығарылған жауап кейде жақсырақ, өйткені ол нақты құжатқа сөзбен жақынырақ болады.

# Көп сұрау (концептуалды) нұсқалар = model.uret("Бұл сұрақты 3 түрлі жолмен көрсетіңіз: " + сұрақ)tum_sonuc = []нұсқалардағы v үшін: all_sonuc += vector_intermediate(v, k=6)контекст = сингулярлы_және реті(tum_nәtice)[:6]

Әлсіз іздеу / Күшті іздеу

Әлсіз (бір кезең, тек семантика, тұрақты k=3):

нәтиже = vector_search(сұрақ, k=3)# Мәселе: өнім коды жіберіліп қалды, қиын сұрақтарға 3-бөлімді дұрыс енгізу мүмкін емес.

Күшті (гибридті + кең + қайта рейтинг + қажет болса көп сұрау):

кандидаттар = гибридті_іздеу(қайта жазу(сұрақ, өткен), k=20)контекст = reranker.score(сұрақ, кандидаттар).first(4)# Нақты сәйкестік те, мағына да жазылады; Ол ең жақсы 4 модельге барады.

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

1-жағдай — Өнім коды қашып кетті. Қолдау тобында таза семантикалық іздеу «RTX-9080 драйверінің қатесі» деген сұрақта «RTX-9080» сөзбе-сөз таба алмады; Ол басқа атаулары бар өнімдерді әкеліп жатқан. Гибридті іздеу қосылғанда, дәл код сәйкестігі орын алып, дұрыс мақалаларды қайтару жылдамдығы 58%-дан 92%-ға дейін өсті.

2-жағдай – Қайта рейтинг айырмашылығы. Параллегал k=5 арқылы жұмыс істеді, бірақ дұрыс элемент көбінесе 7-10. Ол қатарда қалды. k=20 + қайта рейтинг енгізілгенде, дұрыс мақаланың алғашқы үштікке кіру көрсеткіші 61%-дан 94%-ға дейін өсті; Кідіріс бар болғаны 300 мс артты - қолайлы ымыра.

3-жағдай — контекстсіз қосымша сұрақ. HR көмекшісінде пайдаланушы «толықтай жұмыс істейтіндер ше?» Деп сұрайды. Мен сұрағанымда, жүйе маңызды емес бөліктерді әкелді. Сұрауды қайта жазу арқылы («жыл сайынғы еңбек демалысы» контекстін бұрынғыдан алып, «толық емес жұмыс күнімен жұмыс істейтін қызметкерлер жыл сайынғы еңбек демалысына құқылы» дегенді қосу арқылы) дұрыс жауап беру көрсеткіші 40%-дан 86%-ға дейін өсті.

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

  • Тек семантикалық іздеуге сүйенеді: Өнім коды, аббревиатура, тиісті атау жіберілмейді; Гибридті қосыңыз.
  • k тым кішкентай ұстау: дұрыс бөлік тізімге кіре алмайды; оны кең етіп, қайта разрядпен тарылтыңыз.
  • Ешқашан қайта рейтинг туралы ойланбаңыз: Бірінші іздеу өрескел; Екінші смарт пас сапаны айтарлықтай жақсартады.
  • Қосымша сұрақтарды келесідей іздеу: Мәтінмәні жоқ сұрақ мағынасызды іздейді; қайта жазу.
  • К соқыр ұлғайту (қайта рейтингсіз): Модель шуға толы, жауап бұрмаланады және құны артады.
Абайлаңыз: әрбір техника шығын мен кідіріс қосады. Көп сұрау 3 есе іздеуді білдіреді, қайта ранжирлеу қосымша модельді шақыруды білдіреді. Алдымен қарапайым гибридтен бастаңыз + ақылға қонымды k; Қажет болған жерде ауыр әдістерді өлшеңіз және қосыңыз. Өлшеусіз қосу.

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

  • Top-k - еске түсіру мен дәлдік арасындағы тепе-теңдік; Әдетте 4-8 - жақсы бастама.
  • Гибридті іздеу семантикалық іздеуді кілт сөзбен (BM25) іздеуді біріктіреді; Нақты сәйкестіктерді қалпына келтіреді.
  • Қайта рейтинг үміткерлерді сенімді үлгімен кең бастапқы іздеуден қайта бағалайды және ең жақсыларын таңдайды.
  • Сұрауды түрлендіру (қайта жазу, көп сұрау, HyDE) қиын және мәтінмәнсіз сұрақтарды іздеуге болады.
  • Күшті үлгі: кең алу → гибридпен біріктіру → қайта дәрежемен тар; бірақ әрбір техниканы өлшеу арқылы қосыңыз.

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

Алдыңғы бөлімдердегі деректермен 6 қиын сұрақ дайындаңыз: кемінде 2 нақты сәйкестікті талап ететін (өнім коды, аббревиатура, күн), 2 семантикалық (әртүрлі сөздермен бір тақырып), контекстсіз 2 қосымша сұрақ. (1) Алдымен әрбір сұрақты таза семантикалық іздеу ретінде қарастырып, қай бөліктер шығатынын қолмен белгілеңіз. (2) Гибридті және қайта рейтингті қосу арқылы бірдей сұрақтарды қайта бағалаңыз. (3) Қосымша сұрақтарды мәтінмәнсіз қайта жазыңыз. Кестелік пішінде қай әдіс сұрақ түріне ерекшеленетінін ескеріңіз.

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

  • [ ] Мен top-k - еске түсіру-дәлдік тепе-теңдігі және ақылға қонымды бастапқы диапазон екенін білемін.
  • [ ] Гибридті іздеу дәл сәйкестіктерді неге қалпына келтіретінін түсіндіре аламын.
  • [ ] Мен қайта бағалаудың екі сатылы логикасын қолдана аламын (кең → ақылды тар).
  • [ ] Мен мәтінмәнсіз кейінгі сұрақтарды қайта жазу қажеттігін түсінемін.
  • [ ] Мен ауыр әдістерді өлшеу арқылы емес, өлшеу арқылы қосқанымды растаймын.