Добивки:
- Спроведување на хибридно пребарување кое комбинира избор на топ-к и семантичко пребарување и пребарување на клучни зборови
- Зголемување на точноста на првото пребарување со повторно рангирање
- Да се направат тешките прашања попребарливи со техники како што се трансформација на барање и HyDE
Убаво ги исецкавте документите и ги ставивте во векторската база на податоци. Сега вистинската работа: преземање на вистинските парчиња кога корисникот поставува прашање. Ова се нарекува пронаоѓање и е столбот на квалитетот на RAG. Запомнете ја фразата „Квалитет на пронаоѓање = квалитет на RAG“; Оваа единица е токму уметноста на подобрување на тој квалитет. Ќе опфатиме практични техники од top-k селекција до хибридно пребарување, од повторно рангирање до трансформација на барање.
Топ-к: Колку парчиња ќе донесеме?
Најосновната поставка: колку парчиња (k) да се вратат од пребарувањето. Ако донесете помалку (k=1) постои голем ризик да го пропуштите точното парче; Ако додадете премногу (k=20), тоа ќе додаде бучава на моделот и цената на токен ќе се зголеми.
Разликувајте два концепта. Потсетиме: стапката со која точното парче е меѓу преземените. Прецизност: стапката со која е релевантно она што се добива. Зголемувањето на k го зголемува помнењето, но ја намалува прецизноста. Целта е да се избалансираат двете.
топ-к
Влијание
соодветна ситуација
1-3
Висока прецизност, ризик од промашување
Едноставни прашања со еден одговор
4-8
Биланс; повеќето сценарија
Генерален корпоративен RAG
10-20
Повисоко сеќавање, бучавата се зголемува
Со прерангирање (подолу)
Совет: Вообичаена и моќна шема: земете широк (k=20), потоа стеснете со повторно рангирање (топ 4). На овој начин нема да пропуштите ништо и му давате чист контекст на моделот.
Хибридно пребарување: Моќта на две пребарувања
Семантичкото (векторско) пребарување го доловува значењето, но ги пропушта работите: целосен код на производот („XR-4471“), ретка кратенка, соодветно име, број на верзија. За овие задачи со точно совпаѓање, пребарувањето клучни зборови од старата школа - особено класичниот алгоритам наречен BM25 - е многу добар.
Хибридното пребарување ги комбинира двете: функционираат и семантичките и пребарувањата за клучни зборови, комбинирајќи ги резултатите. Така, во прашање како „Гарантен рок на
Спојувањето обично се прави со RRF (Reciprocal Rank Fusion): патеката што е повисока во двете листи доаѓа напред.
# Хибридно пребарување (концептуално)sem = векторско_пребарување(прашање, k=20) # meaningkey = bm25_search(прашање, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # спој ги двете, топ 8
Повторно рангирање: Второ и попаметно додавање
Првиот повик може да биде брз, но груб. Повторното рангирање ги бодува кандидатите вратени со првото пребарување еден по еден со помоќен модел (обично вкрстен енкодер - модел кој ги чита прашањето и пасусот заедно и ја бодува релевантноста) и ги поместува најрелевантните на врвот.
Логиката е следна: со првото пребарување се доделуваат голем број кандидати за отповикување (20 кандидати), реранкерот ги избира најдобрите 4 за прецизност. Овој пристап во две фази е многу попрецизен од пребарувањето во една фаза. Тоа чини одредено одложување и дополнителна обработка; Добивката е значително зголемување на квалитетот.
# (концептуални)кандидати за пронаоѓање во две фази = хибридно_пребарување(прашање, k=20) # широк, брз резултат = reranker.score(прашање, кандидати) # релевантна оценка за секој кандидатски контекст = rated.rank()[:4] # топ 4
Трансформирање на барањето
Понекогаш проблемот не е во пребарувањето, туку во самото прашање. Ако корисникот праша „што е со работниците од далечина?“ ', ова не може да се бара сам (не е јасно што е за работниците од далечина). Еве ги техниките за трансформација на барањето:
- Повторно запишете: Користете историја на разговори за да го направите прашањето самостојно: „Што имаат право на годишен одмор работниците од далечина?“
- Мулти-прашање: генерирајте 3 различни изрази на истото прашање, пребарувајте со сите нив, комбинирајте ги резултатите. Различни зборови наоѓаат различни делови.
- HyDE (Hypothetic Document Embeddings): Прво испечатете „можен одговор“ на моделот, а потоа вметнете го и побарајте го тој имагинарен одговор. Имагинарниот одговор понекогаш се наоѓа подобро бидејќи со зборови е поблизок до вистинскиот документ.
# Мулти-прашање (концептуални) варијанти = model.uret("Искажи го ова прашање на 3 различни начини: " + прашање)tum_sonuc = []за v во варијанти: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]
Слабо пребарување / Силно пребарување
Слаб (едностепен, само семантика, константа k=3):
резултат = vector_search(прашање, k=3)# Проблем: кодот на производот е пропуштен, не може да се внесе точниот дел 3 во тешки прашања.
Моќен (хибрид + Widek + повторно рангирање + повеќекратно барање доколку е потребно):
кандидати = hybrid_search(rewrite(прашање, минато), k=20)context = reranker.score(прашање, кандидати).first(4)# И точното совпаѓање и значењето се доловени; Оди кај најдобрите 4 модели.
Три мини футроли
Случај 1 — Кодот на производот е избегнат. Чистото семантичко пребарување на тим за поддршка не можеше да го најде „RTX-9080“ дословно во прашањето „Грешка на возачот RTX-9080“; Носеше и други производи со слични имиња. Кога беше додадено хибридното пребарување, се случи точно совпаѓање на кодот и стапката на враќање точни статии се зголеми од 58% на 92%.
Случај 2 - Разлика за повторно рангирање. Параправник работеше со k=5, но точната ставка е 7-10 најчесто. Тој остана во редовите. Кога беше воведено повторно рангирање k=20 +, стапката на точната статија во првите 3 се зголеми од 61% на 94%; Латентноста се зголеми за само 300 ms - прифатлив компромис.
Случај 3 - Последователно прашање без контекст. Во асистент за човечки ресурси, корисникот прашува „што е со хонорарците? Кога прашав, системот донесе небитни делови. Со препишување на барањето (повлекување на контекстот „годишен одмор“ од минатото и додавање „Вработените со скратено работно време имаат право на годишен одмор“), стапката на точни одговори се зголеми од 40% на 86%.
Вообичаени грешки
- Потпирајќи се исклучиво на семантичко пребарување: кодот на производот, кратенката, соодветното име се пропуштени; Додадете хибрид.
- Одржување на k премногу мало: Точното парче не може да влезе во списокот; направете го широк и стеснете го со повторно рангирање.
- Никогаш не размислувајќи за повторно рангирање: Првото пребарување е грубо; Втората паметна пропусница значително го подобрува квалитетот.
- Пребарување на дополнителни прашања како што е: Прашање без контекст бара бесмислено; препишуваат.
- Слепо зголемување на k (без повторно рангирање): Моделот е исполнет со бучава, одговорот е искривен и цената се зголемува.
Внимавајте: секоја техника додава цена и доцнење. Мулти-прашање значи 3-кратно пребарување, повторно рангирање значи дополнителен повик на моделот. Прво започнете со едноставен хибрид + разумен k; Мерете и додајте тешки техники каде што навистина е потребно. Додавање без мерење.
Сумирано
- Топ-к е рамнотежа помеѓу потсетувањето и прецизноста; Генерално 4-8 е добар почеток.
- Хибридното пребарување комбинира семантичко пребарување со пребарување на клучни зборови (BM25); Ги обновува точните совпаѓања.
- Повторното рангирање ги враќа оценките на кандидатите од широкото првично пребарување со робустен модел и ги избира најдобрите.
- Трансформацијата на барањето (препишување, мулти-прашање, HyDE) прави тешки и без контекст прашања да се пребаруваат.
- Силен шаблон: широко доведување → спојување со хибрид → тесно со повторно рангирање; но додадете ја секоја техника со нејзино мерење.
Задача за апликација
Подгответе 6 тешки прашања со податоци од претходните единици: најмалку 2 кои бараат точно совпаѓање (шифра на производ, кратенка, датум), 2 семантички (иста тема со различни зборови), 2 дополнителни прашања без контекст. (1) Прво размислете за секое прашање како чисто семантичко пребарување и рачно означете кои делови ќе се појават. (2) Повторно проценете ги истите прашања со додадени хибридни и повторно рангирање. (3) Препишете ги дополнителните прашања без контекст. Забележете во табеларна форма која техника прави разлика во кој тип на прашање.
листа за проверка
- [ ] Знам дека top-k е рамнотежа на повлекување-прецизност и разумен стартен опсег.
- [ ] Можам да објаснам зошто хибридното пребарување ги враќа точните совпаѓања.
- [ ] Можам да ја применам логиката во два чекора на повторно рангирање (широко → паметно тесно).
- [ ] Ја препознавам потребата да се препишат дополнителните прашања без контекст.
- [ ] Потврдувам дека додадов тешки техники со мерење, а не со мерење.