Kopsavilkums:

RAG sistēmu izveidē kosusa līdzības metrika bieži tiek izmantota nepareizu pieņēmumu dēļ. Šis raksts izskaidro, kāpēc vektoru normalizācija padara vienkāršāko skalāro reizinājumu par daudz efektīvāku izvēli jūsu uzņēmuma meklēšanas infrastruktūrā.

Izplatītais mīts par kosusa līdzību RAG sistēmās

Veidojot uzņēmuma zināšanu bāzes meklētājus, izstrādātāji bieži paļaujas uz gataviem iestatījumiem. Vektoru datubāzēs kā noklusējuma mēraugs semantiskajai līdzībai parasti tiek piedāvāta kosusa līdzība (Cosine Similarity). Tā aprēķina leņķi starp diviem vektoriem, ignorējot to garumu.

Tomēr šāda pieeja var radīt lieku skaitļošanas slodzi. Ja izmantotie embeddingu modeļi jau sākotnēji atgriež normalizētus vektorus, šīs metrikas izmantošana zaudē savu jēgu. Lielākā daļa mūsdienu modeļu, piemēram, OpenAI vai Cohere rīki, datus sagatavo tieši šādā veidā.

Kas ir vektoru meklēšana un kā tā darbojas

Lai izprastu optimizācijas iespējas, vispirms jādefinē pamatjēdzieni. Vektoru meklēšana ir informācijas meklēšanas metode, kurā teksta fragmenti tiek pārvērsti augstas dimensijas skaitļu masīvos jeb vektoros. Šie vektori reprezentē vārdu un teikumu nozīmi, ļaujot datoram saprast satura kontekstu, nevis tikai meklēt precīzas sakritības.

Kad lietotājs ievada vaicājumu, sistēma salīdzina tā vektoru ar datubāzē esošajiem dokumentu vektoriem. Šim salīdzinājumam parasti izmanto trīs matemātiskās metodes.

Metrika Darbības princips Sarežģītība Labākais pielietojums
Eiklīda attālums (L2) Mēra taisnas līnijas attālumu starp diviem punktiem Augsta Ja vektoru garumam un biežumam ir liela nozīme
Skalārais reizinājums (Dot Product) Mēra virziena un garuma kopējo projekciju Zema (ātra) Ja vektori ir iepriekš normalizēti
Kosusa līdzība (Cosine) Mēra tikai leņķi starp vektoriem Vidēja Ja tekstu garumi datubāzē stipri atšķiras

Matemātiskā sakarība starp skalāro reizinājumu un kosusa līdzību

Daudzi speciālisti neapzinās, ka kosusa līdzība un skalārais reizinājums ir cieši saistīti. Ja abi vektori ir normalizēti (to garums jeb norma ir vienāda ar 1), tad kosusa līdzība ir matemātiski identiska skalārajam reizinājumam. Šajā gadījumā papildu dalīšanas darbības ar vektoru garumiem nav vajadzīgas.

Kā norādīts Towards Data Science analītiskajā materiālā, izstrādātāji bieži tērē servera resursus, lai aprēķinātu kosusa līdzību tur, kur pietiktu ar vienkāršu skalāro reizinājumu. Lielos datu apjomos šī atšķirība var izpausties kā palielināts meklēšanas latentums un augstākas infrastruktūras izmaksas.

import numpy as np

# Divi paraugvektori
a = np.array([0.3, 0.9, 0.1])
b = np.array([0.4, 0.8, 0.43])

# Normalizējam vektorus līdz vienības garumam (L2 norma = 1)
a_norm = a / np.linalg.norm(a)
b_norm = b / np.linalg.norm(b)

# Skalārais reizinājums normalizētiem vektoriem
dot_prod = np.dot(a_norm, b_norm)

# Kosusa līdzība
cosine_sim = np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

# Abi rezultāti ir identiski
print(f"Skalārais reizinājums: {dot_prod:.6f}")
print(f"Kosusa līdzība: {cosine_sim:.6f}")
Izmantojot normalizētus vektorus, datubāzei nav jāveic dārgas kvadrātsakņu un dalīšanas operācijas katra meklēšanas vaicājuma laikā. Tas nodrošina tūlītēju darbības ātruma pieaugumu.
⚠️ Ierobežojumi un riski
Ja izmantojat vecākus vai pašu apmācītus embeddingu modeļus, kas neatbalsta automātisku normalizāciju, skalārais reizinājums bez iepriekšējas datu sagatavošanas sniegs neprecīzus rezultātus. Šādos gadījumos garākiem dokumentiem tiks piešķirta nepamatoti augsta prioritāte.
💡 Izstrādes padoms
Pirms izvēlaties metriku savā vektoru datubāzē (piemēram, Pinecone, Qdrant vai Milvus), vienmēr pārbaudiet izvēlētā embeddingu modeļa dokumentāciju. Ja tajā minēts, ka izvades vektori ir L2-normalizēti, iestatiet datubāzē 'Dot Product' (vai 'IP' - Inner Product) metriku.
🎯 Aigents.lv rekomendācija
Baltijas uzņēmumiem, kas veido savas iekšējās RAG meklēšanas sistēmas latviešu valodas dokumentiem, ieteicams izmantot modernus mākoņpakalpojumu embeddingus. Lai nodrošinātu augstu sistēmas ātrdarbību, konfigurējiet savu vektoru datubāzi uz skalāro reizinājumu (Dot Product), nevis kosusa līdzību. Šādu datu apstrādi efektīvi veic mākslīgā intelekta asistenti uzņēmumiem, kas palīdz automatizēt klientu atbalstu un iekšējo meklēšanu bez lieka serveru jaudas patēriņa.

Biežāk uzdotie jautājumi (FAQ)

Kāpēc skalārais reizinājums ir ātrāks par kosusa līdzību?

Skalārais reizinājums prasa mazāk matemātisko operāciju. Kosusa līdzības aprēķinam ir papildus jāizdala rezultāts ar abu vektoru garumu reizinājumu, kas ietver skaitļošanā smagas kvadrātsaknes operācijas.

Vai visi embeddingu modeļi atgriež normalizētus vektorus?

Nē, ne visi. Tomēr lielākā daļa populāro un moderno modeļu (tostarp OpenAI text-embedding-3 un Cohere v3) pēc noklusējuma atgriež L2 normalizētus vektorus, padarot skalāro reizinājumu par optimālo izvēli.

Kas notiks, ja izmantošu skalāro reizinājumu uz nenormalizētiem datiem?

Meklēšanas rezultāti būs neprecīzi un neobjektīvi. Sistēma dos priekšroku garākiem tekstiem vai dokumentiem ar biežāk atkārtotiem vārdiem, jo to vektoru garums būs lielāks.