యూనిట్ 2 / 11

పొందుపరచడం మరియు వెక్టర్ డేటాబేస్ లాజిక్

లాభాలు:

  • పొందుపరచడం అనేది సెమాంటిక్ స్పేస్‌లో టెక్స్ట్‌ను వెక్టర్‌గా మారుస్తుందని మరియు ఇలాంటి అర్థాలు క్లోజ్ వెక్టర్స్ అని అర్థం చేసుకోండి
  • కొసైన్ మరియు డాట్ సారూప్యత కొలమానాలతో ANN శోధన ఎలా పనిచేస్తుందో వివరిస్తోంది
  • మెటాడేటా ఫిల్టరింగ్ కోసం ధర, స్కేల్ మరియు అవసరం ఆధారంగా సాధారణ వెక్టార్ డేటాబేస్‌లను ఎంచుకోవడం

RAG యొక్క గుండెలో ఒకే ప్రశ్న ఉంది: "ఏ టెక్స్ట్ ముక్క వినియోగదారు ప్రశ్నకు చాలా పోలి ఉంటుంది?" కంప్యూటర్ వచనాన్ని సంఖ్యలతో ప్రాసెస్ చేస్తుంది, అక్షరాలా కాదు. అందుకే మనం మొదట వచనాన్ని దాని అర్థాన్ని కలిగి ఉండే సంఖ్యలుగా మార్చాలి. పొందుపరచడం అంటే: వచనాన్ని ఆ టెక్స్ట్ యొక్క అర్థాన్ని సూచించే సంఖ్యల (వెక్టర్) శ్రేణిగా మార్చే ప్రక్రియ. మీరు ఈ యూనిట్‌ని పూర్తి చేసినప్పుడు, పొందుపరచడం ఎలా పని చేస్తుందో, సారూప్యతను ఎలా కొలుస్తారు మరియు సరైన వెక్టార్ డేటాబేస్‌ను ఎలా ఎంచుకోవాలో మీకు తెలుస్తుంది.

పొందుపరచడం: అర్థాన్ని అక్షాంశాలలోకి అనువదించడం

ఎంబెడ్డింగ్ మోడల్ (ప్రత్యేకంగా శిక్షణ పొందిన కృత్రిమ మేధస్సు) మీరు అందించే వచనాన్ని వెక్టర్‌గా మారుస్తుంది, ఉదాహరణకు, 1024 సంఖ్యలు. ఈ వెక్టార్‌ని బహుమితీయ స్థలంలో కోఆర్డినేట్‌గా భావించండి. మేజిక్ ఇది: అర్థంలో సారూప్యమైన పాఠాలు ఈ స్థలంలో సన్నిహిత కోఆర్డినేట్‌లలోకి వస్తాయి.

ఒక సాధారణ ఉదాహరణ: "వార్షిక సెలవు", "వెకేషన్ అర్హత" మరియు "వార్షిక చెల్లింపు సెలవు" అనేవి వేర్వేరు పదాలను ఉపయోగిస్తాయి, కానీ ఒకే విషయం అర్థం - వాటి వెక్టర్‌లు ఒకదానికొకటి దగ్గరగా ఉంటాయి. "పేరోల్ ఖాతా" అనేది వేరే విషయం - దాని వెక్టర్ దూరం. కాబట్టి వినియోగదారు "నాకు ఎన్ని రోజులు సెలవులు ఉన్నాయి?" మీరు అడిగినప్పుడు, "సెలవు" అనే పదం లేని "వార్షిక సెలవు 14 రోజులు" అని చెప్పే పత్రాన్ని కూడా మేము కనుగొనవచ్చు. ఇది క్లాసిక్ కీవర్డ్ శోధన (పదానికి సరిగ్గా సరిపోయే శోధన) చేయలేనిది.

చిట్కా: "అర్థం యొక్క వేలిముద్ర"గా పొందుపరచడం గురించి ఆలోచించండి. ఒకే అర్థంతో రెండు వాక్యాల వేలిముద్రలు ఒకేలా కనిపిస్తాయి; మాటలు వేరుగా ఉన్నా.

ఒక ముఖ్యమైన నియమం: ప్రశ్నను పొందుపరిచేటప్పుడు మీరు ఉపయోగించే మోడల్ పత్రాలను పొందుపరిచేటప్పుడు మీరు ఉపయోగించే అదే మోడల్‌గా ఉండాలి. వేర్వేరు నమూనాలు వేర్వేరు ప్రదేశాలను ఉత్పత్తి చేస్తాయి; కోఆర్డినేట్లు సాటిలేనివిగా మారతాయి.

సారూప్యతను ఎలా కొలవాలి?

రెండు వెక్టర్‌లు ఎంత సారూప్యంగా ఉన్నాయో కొలవడానికి అనేక పద్ధతులు ఉన్నాయి. అత్యంత సాధారణమైనది కొసైన్ సారూప్యత: ఇది రెండు వెక్టర్స్ మధ్య కోణాన్ని కొలుస్తుంది. కోణం చిన్నగా ఉంటే (వెక్టర్‌లు ఒకే దిశలో ఉంటాయి), సారూప్యత ఎక్కువగా ఉంటుంది. విలువ −1 మరియు 1 మధ్య ఉంటుంది; 1కి దగ్గరగా = చాలా పోలి ఉంటుంది.

ప్రమాణం

ఇది దేనిని కొలుస్తుంది?

ఇది ఎప్పుడు ప్రాధాన్యతనిస్తుంది?

కొసైన్

వెక్టర్స్ మధ్య కోణం (దిశ).

అత్యంత సాధారణ; టెక్స్ట్ సెమాంటిక్ సారూప్యతలో డిఫాల్ట్

డాట్ ఉత్పత్తి

దిశ + పరిమాణం కలిసి

వెక్టర్స్ సాధారణీకరించబడితే, అది కొసైన్ వలె అదే ఫలితాన్ని ఇస్తుంది; వేగంగా ఉంటుంది

యూక్లిడియన్ (యూక్లిడియన్ దూరం)

కోఆర్డినేట్‌ల మధ్య నేరుగా దూరం

కొన్ని క్లస్టరింగ్ దృశ్యాలలో; వచనంలో తక్కువగా ఉపయోగించబడింది

ఆచరణలో, చాలా ఎంబెడ్డింగ్ మోడల్‌లు సాధారణీకరించిన వెక్టర్‌లను ఉత్పత్తి చేస్తాయి (పరిమాణం 1కి సెట్ చేయబడింది); ఈ సందర్భంలో, కొసైన్ మరియు డాట్ ఉత్పత్తి ఒకే క్రమాన్ని అందిస్తాయి. నిర్ణయం స్తంభించవద్దు: కొసైన్‌తో ప్రారంభించండి.

మిలియన్ల కొద్దీ వెక్టర్స్‌లో, వాటిని ఒక్కొక్కటిగా పోల్చడం నెమ్మదిగా ఉంటుంది. అందుకే వెక్టార్ డేటాబేస్‌లు ANN (సుమారు సమీప పొరుగు) అల్గారిథమ్‌లను ఉపయోగిస్తాయి. ANN చాలా త్వరగా "ఖచ్చితమైన దగ్గరి" కంటే "దాదాపు ఖచ్చితమైన దగ్గరగా" కనుగొంటుంది. ఉదాహరణకు, HNSW అనే పద్ధతి 10 మిలియన్ వెక్టర్‌లకు కూడా కొన్ని మిల్లీసెకన్లలో ఫలితాలను అందిస్తుంది. మీరు ఖచ్చితత్వం యొక్క చిన్న త్యాగం కోసం గొప్ప వేగాన్ని పొందుతారు.

వెక్టర్ డేటాబేస్ ఏమి చేస్తుంది?

వెక్టార్ డేటాబేస్ ఒకేసారి మూడు పనులను చేస్తుంది: (1) వెక్టార్‌లను నిల్వ చేస్తుంది, (2) క్వెరీ వెక్టార్‌కు సమానమైన వెక్టర్‌లను త్వరగా కనుగొంటుంది, (3) ప్రతి వెక్టార్ పక్కన మెటాడేటా ద్వారా ఫిల్టర్ చేస్తుంది. మెటాడేటా మీరు ఆ భాగానికి జోడించే ట్యాగ్‌లు: సోర్స్ ఫైల్, తేదీ, విభాగం, గోప్యతా స్థాయి మొదలైనవి. ఎంటర్‌ప్రైజ్ RAGలో మెటాడేటా ఫిల్టరింగ్ కీలకం; ఎందుకంటే మీరు "ఆర్థిక శాఖ యొక్క 2025 డాక్యుమెంట్‌లలో మాత్రమే శోధించండి" వంటి పరిమితులను సెట్ చేయగలగాలి.

# వెక్టార్ డేటాబేస్‌లో నమోదు చేసుకోండి (conceptual)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("వార్షిక చెల్లింపు సెలవు 14 రోజులు..."), text="వార్షిక చెల్లింపు సెలవు 14 రోజులు...", మెటాడేటా={"source": "ik_departfment",I. "తేదీ": "2025-06", "గోప్యత": "ic"})

# మెటాడేటా ఫిల్టర్ చేసిన శోధన (సంభావిత)ఫలితం = vektor_db.search( vektor=embed("నాకు ఎన్ని రోజులు సెలవు ఉంది?"), top_k=4, filter={"department": "HR", "privacy": ["internal", "on"]})

సరైన డేటాబేస్ను ఎంచుకోవడం

వాహనం

ఫీచర్ చేసిన అంశం

అనుకూలమైన పరిస్థితి

అంతర్నిర్మిత / ఫైల్ ఆధారిత (ఎంబెడెడ్ లైబ్రరీ)

సంస్థాపన లేదు, ఒకే యంత్రం

ప్రోటోటైప్, చిన్న కిట్ (< కొన్ని వందల వేల భాగాలు)

నిర్వహించబడే క్లౌడ్ సేవ

స్కేలింగ్ మరియు నిర్వహణ మీ బాధ్యత కాదు

ఉత్పత్తి, వేగంగా అభివృద్ధి చెందుతున్న డేటా, చిన్న బృందం

మీ స్వంత సర్వర్‌లో ఓపెన్ సోర్స్

పూర్తి నియంత్రణ, మీ డేటా మీదే ఉంటుంది

గోప్యతా బాధ్యత, ఇప్పటికే ఉన్న మౌలిక సదుపాయాలు

ఇప్పటికే ఉన్న డేటాబేస్కు అదనంగా

మీరు ప్రత్యేక వ్యవస్థలను నిర్వహించరు

మీరు ఇప్పటికే ఉపయోగిస్తున్న DBకి వెక్టర్ మద్దతును జోడిస్తోంది

ఎన్నుకునేటప్పుడు అడగండి: ఎన్ని ముక్కలు ఉంటాయి? మెటాడేటా ఫిల్టరింగ్ ఎంత క్లిష్టమైనది? కంపెనీ వెలుపల డేటా వెళ్లగలదా (గోప్యత)? బృందం మౌలిక సదుపాయాలను నిర్వహించగలదా? చిన్నగా ప్రారంభించడం మరియు అవసరమైన విధంగా విస్తరించడం తరచుగా తెలివైనది.

బలహీనమైన విధానం / బలమైన విధానం

బలహీనం (సాదా పొందుపరచడం నిల్వ చేయడం, మెటాడేటా లేదు):

కేవలం టెక్స్ట్ మరియు వెక్టార్‌ను సేవ్ చేయండి. శోధించండి: చాలా సారూప్యమైన 4 వెక్టర్‌లను తిరిగి ఇవ్వండి.# సమస్య: "ప్రస్తుత HR డాక్స్ మాత్రమే" వంటి ఫిల్టర్ చేయలేము;# పాత/అనధికారిక భాగాలు కూడా ప్రతిస్పందనలో చేర్చబడవచ్చు.

శక్తివంతమైన (రిచ్ మెటాడేటా + ఫిల్టర్ చేసిన శోధన):

ప్రతి భాగానికి మూలం, తేదీ, విభాగం మరియు గోప్యతా ట్యాగ్‌ని జోడించండి. శోధన సమయంలో వినియోగదారు అధికారం మరియు ప్రస్తుత స్థితికి అనుగుణంగా ఫిల్టర్ చేయండి: filter = {"గోప్యత": user_authority, "date_date": "2024-01"}# కాబట్టి, ఫలితం సురక్షితంగా మరియు తాజాగా ఉంటుంది.

మూడు మినీ కేసులు

కేసు 1 - తప్పు మోడల్ మిక్స్. ఒక బృందం మోడల్ Aతో పత్రాలను మరియు మోడల్ Bతో ప్రశ్నలను పొందుపరిచింది. శోధనలు అర్థరహిత ఫలితాలను అందించాయి మరియు సరైన సమాధాన రేటు 31% వద్ద ఉంది. నేను ఒకే మోడల్‌కి మారినప్పుడు (రెండూ ఒకే ఎంబెడ్డింగ్ మోడల్), రేటు 88%కి పెరిగింది. పాఠం: ప్రశ్న మరియు పత్రం ఒకే స్థలంలో ఉండాలి.

కేసు 2 — మెటాడేటా లేకుండా గోప్యతా ప్రమాదం. హెల్త్‌కేర్ కంపెనీలో, అన్ని డిపార్ట్‌మెంట్ డాక్యుమెంట్‌లు మెటాడేటా లేకుండా ఒకే పూల్‌లోకి విసిరివేయబడ్డాయి. సేల్స్ అసోసియేట్ ఒక ప్రశ్న అడిగినప్పుడు, సిస్టమ్ రోగి డేటా యొక్క భాగాన్ని సందర్భోచితంగా చేస్తుంది. మెటాడేటా + ఫిల్టర్ జోడించబడినప్పుడు (ప్రామాణీకరణ స్థాయి ప్రకారం), ఈ ప్రమాదం తొలగించబడింది; తిరిగి పొందడంలో, 12 అనధికార ముక్కలు అస్సలు తీసుకురాబడవు.

కేసు 3 - స్కేల్ అడ్డంకి. ఒక ఇ-కామర్స్ కంపెనీ 8 మిలియన్ల ఉత్పత్తి వివరణలను సాధారణ "స్కాన్ ఆల్" పద్ధతితో శోధించింది; ప్రతి ప్రశ్నకు 6 సెకన్ల సమయం పట్టింది. మేము HNSW-ఆధారిత ANNకి మారినప్పుడు, సమయం 45 మిల్లీసెకన్లకు తగ్గింది, ఖచ్చితత్వంలో కేవలం 1% నష్టం మాత్రమే. పాఠం: పెద్ద సెట్‌లో ANN తప్పనిసరి.

సాధారణ తప్పులు

  • విభిన్న నమూనాలతో ప్రశ్న మరియు పత్రాన్ని పొందుపరచడం: ఫలితాలు అర్థరహితమైనవి; ఎల్లప్పుడూ ఒక మోడల్.
  • మెటాడేటాను దాటవేయడం: మీరు ఫిల్టర్ చేయలేరు; మీరు గోప్యత మరియు తాజాదనంపై నియంత్రణ కోల్పోతారు.
  • ఎన్‌క్రిప్షన్ కోసం పొందుపరచడం తప్పుగా ఉంది: పొందుపరచడం రివర్సిబుల్ సమాచారాన్ని కలిగి ఉంటుంది; సున్నితమైన డేటా "దాచబడింది" అని భావించడం తప్పు.
  • ఒక చిన్న సెట్‌లో అనవసరంగా పెద్ద మౌలిక సదుపాయాలను నిర్మించడం: 5,000 భాగాల కోసం నిర్వహించబడే ఒక పెద్ద క్లస్టర్ అనవసరమైన సంక్లిష్టత.
  • సారూప్యత ప్రమాణం గురించి ఎక్కువగా చింతించకండి: టెక్స్ట్‌లో కొసైన్‌తో ప్రారంభించండి; ఫైన్ ట్యూనింగ్ తర్వాత వస్తుంది.
హెచ్చరిక: పొందుపరచడం అనేది సంఖ్యలలో టెక్స్ట్ యొక్క అర్థాన్ని పొందుపరుస్తుంది, కానీ కంటెంట్‌ను "నాశనం" చేయదు. వెక్టార్ డేటాబేస్ లీక్ అయినట్లయితే, అసలు నిల్వ చేయబడిన టెక్స్ట్‌లు (చాలా సంస్థాపనలలో టెక్స్ట్ కూడా నిల్వ చేయబడుతుంది) కూడా రాజీపడతాయి. వెక్టార్ రిపోజిటరీని దానిలోని పత్రాల వలె గోప్యంగా ఉంచండి.

సారాంశంలో

  • పొందుపరచడం వచనాన్ని దాని అర్థాన్ని కలిగి ఉండే సంఖ్యల వెక్టర్‌గా మారుస్తుంది; ఇలాంటి అర్థాలు క్లోజ్ వెక్టర్స్.
  • సారూప్యతను తరచుగా కొసైన్ ద్వారా కొలుస్తారు; సాధారణీకరించిన వెక్టర్స్ కోసం, డాట్ ఉత్పత్తి అదే ఫలితాన్ని ఇస్తుంది.
  • పెద్ద డేటాలో, ANN (ఉదా., HNSW) ఖచ్చితమైన శోధనను భర్తీ చేస్తుంది: తక్కువ ఖచ్చితత్వంతో గొప్ప వేగం.
  • వెక్టార్ డేటాబేస్ వెక్టార్ నిల్వ + సారూప్యత శోధన + మెటాడేటా ఫిల్టరింగ్‌ను నిర్వహిస్తుంది; ఎంటర్‌ప్రైజ్ RAGకి మెటాడేటా అవసరం.
  • ప్రశ్న మరియు పత్రం తప్పనిసరిగా ఒకే ఎంబెడ్డింగ్ మోడల్‌తో అనువదించబడాలి; లేకుంటే కోఆర్డినేట్‌లను పోల్చలేము.

అప్లికేషన్ టాస్క్

మీరు మునుపటి యూనిట్‌లో ఎంచుకున్న పత్రం నుండి 10 చిన్న భాగాలను (ఒక్కొక్కటి 3-6 వాక్యాలు) సంగ్రహించండి. (1) ప్రతి భాగానికి కనీసం మూడు మెటాడేటా ట్యాగ్‌లను రూపొందించండి (మూలం, తేదీ మరియు మీ వ్యాపార సందర్భానికి తగిన మూడవది: విభాగం, ఉత్పత్తి, గోప్యత మొదలైనవి). (2) 3 విభిన్న వినియోగదారు ప్రశ్నలకు ఏ మెటాడేటా ఫిల్టర్‌ని వర్తింపజేయాలో వ్రాయండి. (3) వేర్వేరు పదాలలో ఒకే అర్థాన్ని వ్యక్తీకరించే 3 ప్రశ్న-భాగాల జతలను కనుగొనండి (ఉదా. “వెకేషన్ అర్హత” ↔ “వార్షిక సెలవు”) మరియు అవి ఎందుకు కీవర్డ్ శోధనతో సరిపోలడం లేదు, కానీ పొందుపరచడంతో సరిపోలడం కోసం ఒక వాక్యంలో వివరించండి.

చెక్లిస్ట్

  • [ ] పొందుపరచడం వల్ల వచనాన్ని సెమాంటిక్ స్పేస్‌లో వెక్టర్‌గా మారుస్తుందని మరియు సారూప్య అర్థాలు దగ్గరగా ఉన్నాయని నేను చెప్పగలను.
  • కొసైన్ సారూప్యత కోణాన్ని కొలుస్తుందని మరియు టెక్స్ట్‌లో డిఫాల్ట్ ప్రాధాన్యత అని నాకు తెలుసు.
  • [ ] పెద్ద డేటాలో ANN ఎందుకు అవసరమో నేను వివరించగలను.
  • [ ] గోప్యత మరియు తాజాదనం నియంత్రణ కోసం మెటాడేటా ఎందుకు కీలకమో నాకు తెలుసు.
  • [ ] నేను ప్రశ్న మరియు పత్రాన్ని ఒకే ఎంబెడ్డింగ్ మోడల్‌తో అనువదించే నియమాన్ని అనుసరిస్తాను.