లాభాలు:
- టాప్-కె ఎంపిక మరియు సెమాంటిక్ మరియు కీవర్డ్ శోధనను మిళితం చేసే హైబ్రిడ్ శోధనను అమలు చేయడం
- రీ-ర్యాంకింగ్తో మొదటి శోధన యొక్క ఖచ్చితత్వాన్ని పెంచడం
- క్వెరీ ట్రాన్స్ఫర్మేషన్ మరియు HyDE వంటి టెక్నిక్లతో కష్టమైన ప్రశ్నలను మరింత శోధించగలిగేలా చేయడం
మీరు పత్రాలను చక్కగా ముక్కలు చేసి, వాటిని వెక్టార్ డేటాబేస్లో ఉంచారు. ఇప్పుడు నిజమైన పని: వినియోగదారు ప్రశ్న అడిగినప్పుడు సరైన ముక్కలను పొందడం. దీనిని తిరిగి పొందడం అని పిలుస్తారు మరియు ఇది RAG నాణ్యతకు వెన్నెముక. "రిట్రీవల్ నాణ్యత = RAG నాణ్యత" అనే పదబంధాన్ని గుర్తుంచుకోండి; ఈ యూనిట్ సరిగ్గా ఆ నాణ్యతను మెరుగుపరిచే కళ. మేము టాప్-కె ఎంపిక నుండి హైబ్రిడ్ శోధన వరకు, రీ-ర్యాంకింగ్ నుండి ప్రశ్న రూపాంతరం వరకు ఆచరణాత్మక సాంకేతికతలను కవర్ చేస్తాము.
టాప్-కె: మేము ఎన్ని ముక్కలను తీసుకువస్తాము?
అత్యంత ప్రాథమిక సెట్టింగ్: శోధన నుండి ఎన్ని ముక్కలు (k) తిరిగి రావాలి. మీరు తక్కువ (k=1) తీసుకువస్తే సరైన భాగాన్ని కోల్పోయే ప్రమాదం ఎక్కువగా ఉంటుంది; మీరు ఎక్కువ (k=20) జోడిస్తే, అది మోడల్కు శబ్దాన్ని జోడిస్తుంది మరియు టోకెన్ ధర పెరుగుతుంది.
రెండు భావనల మధ్య తేడాను గుర్తించండి. రీకాల్: తిరిగి పొందిన వాటిలో సరైన ముక్క ఉన్న రేటు. ఖచ్చితత్వం: తిరిగి పొందబడిన రేటు సంబంధితంగా ఉంటుంది. k పెంచడం వల్ల రీకాల్ పెరుగుతుంది కానీ ఖచ్చితత్వం తగ్గుతుంది. రెండింటినీ బ్యాలెన్స్ చేయడమే లక్ష్యం.
టాప్-కె
ప్రభావం
తగిన పరిస్థితి
1-3
అధిక ఖచ్చితత్వం, మిస్ అయ్యే ప్రమాదం
సాధారణ, ఒక-సమాధాన ప్రశ్నలు
4-8
సంతులనం; చాలా దృశ్యాలు
సాధారణ కార్పొరేట్ RAG
10-20
అధిక రీకాల్, శబ్దం పెరుగుతుంది
రీ-ర్యాంకింగ్తో (క్రింద)
చిట్కా: సాధారణ మరియు శక్తివంతమైన నమూనా: వెడల్పు (k=20) పొందండి, ఆపై రీ-ర్యాంకింగ్తో ఇరుకైనది (టాప్ 4). ఈ విధంగా మీరు దేన్నీ కోల్పోరు మరియు మీరు మోడల్కు క్లీన్ కాంటెక్స్ట్ ఇస్తారు.
హైబ్రిడ్ శోధన: రెండు శోధనల శక్తి
సెమాంటిక్ (వెక్టార్) శోధన అర్థాన్ని సంగ్రహిస్తుంది కానీ విషయాలను కోల్పోతుంది: పూర్తి ఉత్పత్తి కోడ్ ("XR-4471"), అరుదైన సంక్షిప్తీకరణ, సరైన పేరు, సంస్కరణ సంఖ్య. ఈ ఖచ్చితమైన మ్యాచ్ టాస్క్ల కోసం, పాత-పాఠశాల కీవర్డ్ శోధన-ముఖ్యంగా BM25 అని పిలువబడే క్లాసిక్ అల్గోరిథం-చాలా మంచిది.
హైబ్రిడ్ శోధన రెండింటినీ మిళితం చేస్తుంది: సెమాంటిక్ మరియు కీవర్డ్ శోధనలు రెండూ పని చేస్తాయి, ఫలితాలను కలపడం. అందువల్ల, "వారంటీ వ్యవధి" వంటి ప్రశ్నలో
విలీనం చేయడం సాధారణంగా RRF (రిసిప్రోకల్ ర్యాంక్ ఫ్యూజన్)తో చేయబడుతుంది: రెండు జాబితాలలో ఎక్కువగా ఉన్న ట్రాక్ ముందుకు వస్తుంది.
# హైబ్రిడ్ రిట్రీవల్ (కాన్సెప్టువల్)సెమ్ = వెక్టర్_సెర్చ్(ప్రశ్న, k=20) # మీనింగ్కీ = bm25_search(ప్రశ్న, k=20) # fullwordresult = rrf_merge(sem, కీ)[:8] # రెండింటినీ ఫ్యూజ్ చేయండి, టాప్ 8
రీ-ర్యాంకింగ్: రెండవ మరియు స్మార్టర్ పాస్
మొదటి కాల్ త్వరగా కానీ మొరటుగా ఉంటుంది. మొదటి శోధన ద్వారా అభ్యర్థులను తిరిగి ర్యాంక్ చేయడం ద్వారా మరింత శక్తివంతమైన మోడల్ (సాధారణంగా క్రాస్-ఎన్కోడర్ — ప్రశ్న మరియు పాసేజ్ని కలిపి చదివి, ఔచిత్యాన్ని స్కోర్ చేసే మోడల్) మరియు అత్యంత సంబంధితమైన వాటిని పైకి తరలించే స్కోర్లు.
తర్కం ఇది: మొదటి శోధన రీకాల్ కోసం పెద్ద సంఖ్యలో అభ్యర్థులను కేటాయిస్తుంది (20 అభ్యర్థులు), రీ-ర్యాంకర్ ఖచ్చితత్వం కోసం ఉత్తమమైన 4ని ఎంపిక చేస్తాడు. ఈ రెండు-దశల విధానం ఒకే-దశ శోధన కంటే చాలా ఖచ్చితమైనది. ఇది కొంత ఆలస్యం మరియు అదనపు ప్రాసెసింగ్ ఖర్చు అవుతుంది; లాభం నాణ్యతలో గణనీయమైన పెరుగుదల.
# రెండు-దశల పునరుద్ధరణ (సంభావిత)అభ్యర్థులు = హైబ్రిడ్_శోధన(ప్రశ్న, k=20) # విస్తృత, శీఘ్ర స్కోరు = reranker.స్కోర్ (ప్రశ్న, అభ్యర్థులు) # ప్రతి అభ్యర్థి సందర్భానికి సంబంధించిన సంబంధిత స్కోర్ = rated.rank()[:4] # top 4
ప్రశ్నను మార్చడం
కొన్నిసార్లు సమస్య శోధనలో కాదు, ప్రశ్నలోనే ఉంటుంది. వినియోగదారు “రిమోట్ వర్కర్ల సంగతేంటి?” అని అడిగితే ', ఇది ఒంటరిగా కోరబడదు (రిమోట్ కార్మికులకు ఏది స్పష్టంగా లేదు). ప్రశ్న పరివర్తన పద్ధతులు ఇక్కడ ఉన్నాయి:
- తిరిగి వ్రాయండి: ప్రశ్నను స్వతంత్రంగా చేయడానికి సంభాషణ చరిత్రను ఉపయోగించండి: "వార్షిక సెలవులకు అర్హత ఉన్న రిమోట్ కార్మికులు ఏమిటి?"
- బహుళ ప్రశ్న: ఒకే ప్రశ్నకు 3 విభిన్న వ్యక్తీకరణలను రూపొందించండి, వాటన్నింటితో శోధించండి, ఫలితాలను కలపండి. వేర్వేరు పదాలు వేర్వేరు ముక్కలను కనుగొంటాయి.
- HyDE (హైపోథెటికల్ డాక్యుమెంట్ ఎంబెడ్డింగ్లు): ముందుగా మోడల్కు "సాధ్యమైన సమాధానం" ప్రింట్ చేసి, ఆ ఊహాత్మక సమాధానం కోసం పొందుపరచండి మరియు శోధించండి. ఊహాత్మక సమాధానం కొన్నిసార్లు మెరుగ్గా కనుగొనబడుతుంది, ఎందుకంటే ఇది వాస్తవ పత్రానికి దగ్గరగా ఉంటుంది.
# Multi-query (conceptual)variants = model.uret("ఈ ప్రశ్నను 3 విభిన్న మార్గాల్లో వ్యక్తపరచండి: " + ప్రశ్న)tum_sonuc = []వేరియంట్లలో v కోసం: all_sonuc += vector_intermediate(v, k=6)context = singular_and_order(tum_result)[:6]
బలహీనమైన రిట్రీవల్ / బలమైన పునరుద్ధరణ
బలహీనం (ఒకే దశ, అర్థశాస్త్రం మాత్రమే, స్థిరమైన k=3):
ఫలితం = వెక్టర్_సెర్చ్(ప్రశ్న, k=3)# సమస్య: ఉత్పత్తి కోడ్ తప్పింది, క్లిష్టమైన ప్రశ్నలలో సరైన పార్ట్ 3ని నమోదు చేయడం సాధ్యపడదు.
శక్తివంతమైన (హైబ్రిడ్ + వైడ్క్ + రీ-ర్యాంకింగ్ + అవసరమైతే బహుళ ప్రశ్న):
అభ్యర్థులు = hybrid_search(rewrite(question, past), k=20)context = reranker.score(question, candidates).first(4)# ఖచ్చితమైన మ్యాచ్ మరియు అర్థం రెండూ సంగ్రహించబడ్డాయి; ఇది ఉత్తమ 4 మోడళ్లకు వెళుతుంది.
మూడు మినీ కేసులు
కేసు 1 - ఉత్పత్తి కోడ్ తప్పించుకుంది. మద్దతు బృందంలోని స్వచ్ఛమైన అర్థ శోధన "RTX-9080 డ్రైవర్ ఎర్రర్" ప్రశ్నలో "RTX-9080"ని వెర్బేట్గా కనుగొనలేకపోయింది; అతను ఇలాంటి పేర్లతో ఇతర ఉత్పత్తులను తీసుకువస్తున్నాడు. హైబ్రిడ్ శోధన జోడించబడినప్పుడు, ఖచ్చితమైన కోడ్ సరిపోలిక ఏర్పడింది మరియు సరైన కథనాలను తిరిగి ఇచ్చే రేటు 58% నుండి 92%కి పెరిగింది.
కేస్ 2 — రీ-ర్యాంకింగ్ తేడా. ఒక పారలీగల్ k=5తో పని చేస్తోంది కానీ సరైన అంశం చాలా సమయాల్లో 7-10. ర్యాంకుల్లోనే ఉండిపోయాడు. k=20 + రీ-ర్యాంకింగ్ను ప్రవేశపెట్టినప్పుడు, టాప్ 3లో ఉన్న సరైన కథనం రేటు 61% నుండి 94%కి పెరిగింది; జాప్యం 300ms మాత్రమే పెరిగింది - ఆమోదయోగ్యమైన రాజీ.
కేస్ 3 — సందర్భం లేకుండా తదుపరి ప్రశ్న. HR అసిస్టెంట్లో, వినియోగదారు “పార్ట్టైమర్ల గురించి ఏమిటి?” అని అడుగుతాడు. నేను అడిగినప్పుడు, సిస్టమ్ అసంబద్ధమైన భాగాలను తీసుకువచ్చింది. ప్రశ్నను తిరిగి వ్రాయడం ద్వారా (గతం నుండి "వార్షిక సెలవు" సందర్భాన్ని తీసివేసి మరియు "పార్ట్-టైమ్ ఉద్యోగులు వార్షిక సెలవులకు అర్హులు" అని జోడించడం ద్వారా), సరైన సమాధాన రేటు 40% నుండి 86%కి పెరిగింది.
సాధారణ తప్పులు
- సెమాంటిక్ శోధనపై మాత్రమే ఆధారపడటం: ఉత్పత్తి కోడ్, సంక్షిప్తీకరణ, సరైన పేరు తప్పినవి; హైబ్రిడ్ జోడించండి.
- k చాలా చిన్నదిగా ఉంచడం: సరైన భాగం జాబితాను నమోదు చేయదు; రీ-ర్యాంక్తో దానిని వెడల్పుగా మరియు ఇరుకైనదిగా చేయండి.
- రీ-ర్యాంకింగ్ గురించి ఎప్పుడూ ఆలోచించవద్దు: మొదటి శోధన మొరటుగా ఉంటుంది; రెండవ స్మార్ట్ పాస్ నాణ్యతను గణనీయంగా మెరుగుపరుస్తుంది.
- తదుపరి ప్రశ్నల కోసం శోధించడం: సందర్భం లేని ప్రశ్న అర్థరహితంగా శోధిస్తుంది; తిరిగి వ్రాయండి.
- గుడ్డిగా పెరుగుతున్న k (రీ-ర్యాంక్ లేకుండా): మోడల్ శబ్దంతో నిండి ఉంటుంది, ప్రతిస్పందన వక్రీకరించబడింది మరియు ఖర్చు పెరుగుతుంది.
జాగ్రత్త: ప్రతి టెక్నిక్ ఖర్చు మరియు ఆలస్యం జోడిస్తుంది. బహుళ ప్రశ్న అంటే 3 రెట్లు శోధన, రీ-ర్యాంకింగ్ అంటే అదనపు మోడల్ కాల్. ముందుగా సాధారణ హైబ్రిడ్ + సహేతుకమైన kతో ప్రారంభించండి; నిజంగా అవసరమైన చోట భారీ సాంకేతికతలను కొలవండి మరియు జోడించండి. కొలత లేకుండా కలుపుతోంది.
సారాంశంలో
- టాప్-కె అనేది రీకాల్ మరియు ఖచ్చితత్వం మధ్య సంతులనం; సాధారణంగా 4-8 మంచి ప్రారంభం.
- హైబ్రిడ్ శోధన సెమాంటిక్ శోధనను కీవర్డ్ (BM25) శోధనతో మిళితం చేస్తుంది; ఖచ్చితమైన సరిపోలికలను తిరిగి పొందుతుంది.
- రీ-ర్యాంకింగ్ బలమైన మోడల్తో విస్తృత ప్రారంభ శోధన నుండి అభ్యర్థులను మళ్లీ స్కోర్ చేస్తుంది మరియు ఉత్తమమైన వాటిని ఎంపిక చేస్తుంది.
- ప్రశ్న రూపాంతరం (తిరిగి వ్రాయడం, బహుళ-ప్రశ్న, HyDE) కష్టతరమైన మరియు సందర్భ రహిత ప్రశ్నలను శోధించగలిగేలా చేస్తుంది.
- బలమైన నమూనా: విస్తృత పొందడం → హైబ్రిడ్తో విలీనం → రీ-ర్యాంక్తో ఇరుకైనది; కానీ ప్రతి సాంకేతికతను కొలవడం ద్వారా జోడించండి.
అప్లికేషన్ టాస్క్
మునుపటి యూనిట్ల నుండి డేటాతో 6 క్లిష్టమైన ప్రశ్నలను సిద్ధం చేయండి: కనీసం 2 ఖచ్చితమైన సరిపోలికలు (ఉత్పత్తి కోడ్, సంక్షిప్తీకరణ, తేదీ), 2 సెమాంటిక్ (వివిధ పదాలతో ఒకే అంశం), సందర్భం లేకుండా 2 తదుపరి ప్రశ్నలు. (1) ముందుగా ప్రతి ప్రశ్నను స్వచ్ఛమైన అర్థ శోధనగా భావించి, ఏ భాగాలు వస్తాయో మాన్యువల్గా గుర్తించండి. (2) అదే ప్రశ్నలను హైబ్రిడ్ మరియు రీ-ర్యాంకింగ్ జోడించి మళ్లీ మూల్యాంకనం చేయండి. (3) సందర్భం లేకుండా తదుపరి ప్రశ్నలను తిరిగి వ్రాయండి. ఏ టెక్నిక్ ఏ ప్రశ్న రకంలో తేడాను కలిగిస్తుందో పట్టిక రూపంలో గమనించండి.
చెక్లిస్ట్
- [ ] టాప్-కె అనేది రీకాల్-ప్రెసిషన్ బ్యాలెన్స్ మరియు సహేతుకమైన ప్రారంభ పరిధి అని నాకు తెలుసు.
- [ ] హైబ్రిడ్ శోధన ఖచ్చితమైన సరిపోలికలను ఎందుకు పునరుద్ధరిస్తుందో నేను వివరించగలను.
- [ ] నేను రీ-ర్యాంకింగ్ యొక్క రెండు-దశల లాజిక్ను వర్తింపజేయగలను (విస్తృత → స్మార్ట్ నారో).
- [ ] సందర్భం లేకుండా తదుపరి ప్రశ్నలను తిరిగి వ్రాయవలసిన అవసరాన్ని నేను గుర్తించాను.
- [ ] నేను భారీ సాంకేతికతలను కొలవడం ద్వారా జోడించానని ధృవీకరిస్తున్నాను, కొలవడం ద్వారా కాదు.