هەرگیز بیرت لەوە کردۆتەوە کە چۆن ئەپڵیکەیشنی Google Photos دەتوانێت لە نێو هەزاران وێنەدا وێنەی پشیلەکەت بدۆزێتەوە؟ یان چۆن Spotify گۆرانییەک پێشنیار دەکات کە ڕێک بە دڵی تۆیە؟
لە پشت پەردەی ئەم تەکنەلۆژیایانەوە، ئامرازێکی بەهێز بوونی هەیە کە پێی دەوترێت ڤێکتەر داتابەیس (Vector Database).
ڤێکتەر داتابەیس چییە؟
ڤێکتەر داتابەیس جۆرێکی تایبەتی داتابەیسە کە بۆ مامەڵەکردن لەگەڵ داتای ئاڵۆز (وەک وێنە، دەق، یان دەنگ) دروست کراوە.
لەبەر ئەوەی کۆمپیوتەر ناتوانێت ڕاستەوخۆ لە وێنەیەک یان ڕستەیەک تێبگات، ئەم داتایانە دەگۆڕدرێن بۆ زنجیرەیەک ژمارە کە پێی دەوترێت ڤێکتەر (Vector) یان Embedding. ئەم ژمارانە تەنها داتا نین، بەڵکو کۆدێکن کە “واتا” و “تایبەتمەندییەکانی” ناوەڕۆکەکە هەڵدەگرن بە زمانێک کە کۆمپیوتەر لێی تێدەگات.
جیاوازییەکە لە شێوازی گەڕاندایە:
- داتابەیسی ئاسایی: بەدوای گونجانی تەواو (Exact Match) دەگەڕێت.
- (نموونە: “ڕێک ئەم وشەیەم بۆ بدۆزەرەوە: Alice”)
- ڤێکتەر داتابەیس: بەدوای لێکچوون (Similarity) دەگەڕێت.
- (نموونە: “وێنەیەک بدۆزەرەوە کە لەمە بچێت” یان “مانای وشەکە لەمە نزیک بێت”)
نموونەیەکی کردەیی: فرۆشگای ئۆنلاین
وا دابنێ تۆ خەریکی دروستکردنی فرۆشگایەکی ئۆنلاینیت بۆ فرۆشتنی پێڵاو. دەتەوێت کاتێک کڕیار وێنەی پێڵاوێکی وەرزشیی ئەپلۆد کرد، سیستەمەکە هاوشێوەترین ئەو پێڵاوانەی پێشان بدات کە لە کۆگاکەتدا هەن.
لێرەدا گەڕان بە وشە (Keyword Search) سەرکەوتوو نابێت، چونکە ڕەنگە کڕیارەکە نەزانێت ناوی مۆدێلی پێڵاوەکە چییە. لێرەدا ڤێکتەر داتابەیس فریات دەکەوێت:
- تۆ هەموو وێنەکانی ناو کۆگاکەت دەگۆڕیت بۆ ڤێکتەر بە بەکارهێنانی مۆدێلێکی AI.
- ئەو ڤێکتەرانە لە ڤێکتەر داتابەیسەکەدا هەڵدەگریت.
- کاتێک کڕیار وێنەیەک ئەپلۆد دەکات، وێنەکە دەکرێت بە ڤێکتەر و بەراورد دەکرێت بەوانەی ناو داتابەیسەکە تا نزیکترین شێوە دەدۆزێتەوە.

چۆن لە ڕاستیدا کار دەکات؟
لە بنچینەدا، نهێنیی ڤێکتەر داتابەیس بریتییە لە پێوانی گۆشەی نێوان ژمارەکان.
بۆ تێگەیشتن لەمە، وەرە وا دابنێین هەر داتایەک (وەک “سێو” یان “لاپتۆپ”) بریتییە لە تیرێک لەسەر نەخشەیەک کە دوو ئاڕاستەی هەیە:
- تەوەرەی X: تا چەند ئەم شتە سروشتییە؟
- تەوەرەی Y: تا چەند ئەم شتە تەکنەلۆژییە؟
کۆمپیوتەر گۆشەی نێوان ئەم تیرانە دەپێوێت؛ چەندە گۆشەکە بچووکتر بێت، واتە داتاکان زیاتر لە یەک دەچن.

نهێنییەکە: لێکچوونی کۆساین (Cosine Similarity)
کاتێک دەمانەوێت بزانین دوو شت لە یەک دەچن، ئێمە سەیری “دووری” نێوانیان ناکەین، بەڵکو سەیری گۆشەی نێوان تیرەکانیان دەکەین. بەمەش دەوترێت Cosine Similarity.
- ئەگەر دوو تیرەکە بە هەمان ئاڕاستە بڕۆن (گۆشەی نێوانیان سفر بێت)، ئەوا زۆر لە یەک دەچن (نمرەی 1.0).
- ئەگەر یەکێکیان بۆ ڕۆژهەڵات و ئەوی تر بۆ باکوور بڕوات (گۆشەی ٩٠ پلە)، ئەوا هیچ لە یەک ناچن (نمرەی 0.0).
هەنگاوەکانی بیرکارییەکە (بە سادەیی):
کۆمپیوتەر چۆن ئەم گۆشەیە دەپێوێت؟ بە سێ هەنگاوی ئاسان:
- لێکدان (Dot Product): ژمارەکانی هەردوو ڤێکتەرەکە لێک دەدات (سروشت لەگەڵ سروشت، تەکنەلۆژیا لەگەڵ تەکنەلۆژیا). ئەمە پێمان دەڵێت ئاڕاستەکانیان تا چەند هاوشێوەن.
- درێژی (Magnitude): درێژیی هەر تیرێک بە جیا دەپێوێت.
- دابەشکردن (Normalization): ئەنجامی لێکدانەکە دابەشی درێژییەکان دەکات. ئەمەش هەمیشە ژمارەیەکمان دەداتێ لە نێوان 0 بۆ 1.

با ئێستا ئەم سێ هەنگاوە بە کۆد ببینین بە بەکارهێنانی Python:
import math
# (١. داتابەیسەکەمان (تەنها لیستێکی سادەیە
# [هەر ڤێکتەرێک: [سروشت، تەکنەلۆژیا
database = [
{"name": "سێو 🍎", "vector": [0.9, 0.1]}, # زۆر سروشتی
{"name": "مۆز 🍌", "vector": [0.8, 0.2]}, # زۆر سروشتی
{"name": "لاپتۆپ 💻", "vector": [0.1, 0.9]}, # زۆر تەکنەلۆژی
{"name": "ڕۆبۆت 🤖", "vector": [0.2, 0.8]} # زۆر تەکنەلۆژی
]
# ٢. ئەمە ئەو بیرکارییەیە کە ڤێکتەر داتابەیسەکان بەکاریدەهێنن
# (Cosine Similarity Function)
def calculate_similarity(v1, v2):
# لێکدانی ژمارەکان لەگەڵ یەکتر (Dot Product)
dot_product = sum(a * b for a, b in zip(v1, v2))
# دۆزینەوەی قەبارەی ڤێکتەرەکان (Magnitude)
magnitude_v1 = math.sqrt(sum(a * a for a in v1))
magnitude_v2 = math.sqrt(sum(b * b for b in v2))
# ئەنجامەکە ژمارەیەکە لە نێوان 0 بۆ 1
if magnitude_v1 * magnitude_v2 == 0: return 0
return dot_product / (magnitude_v1 * magnitude_v2)
# ٣. فەنکشنێک بۆ ئەنجامدانی گەڕان و پرینتکردنی ئەنجامەکان
def search_database(query_vector, query_description):
print(f"\n--- {query_description} {query_vector} ---")
results = []
for item in database:
score = calculate_similarity(query_vector, item["vector"])
results.append((item["name"], score))
# ڕیزکردنی ئەنجامەکان (بەرز بۆ نزم)
results.sort(key=lambda x: x[1], reverse=True)
for name, score in results:
# شێوازی پرینتکردنەکەمان جوان کردووە بۆ ئەوەی ڕوون بێت
bar = "█" * int(score * 10) # گرافێک بۆ نیشاندانی هێزی لێکچوون
print(f"{name} : {score:.2f} | {bar}")
# ==========================================
# ٤. تاقیکردنەوەی گەڕانی جیاواز
# ==========================================
# نموونەی یەکەم: بەدوای شتێکی تەواو "تەکنەلۆژی"دا دەگەڕێین
search_database([0.0, 1.0], "گەڕان بۆ تەکنەلۆژیا")
# نموونەی دووەم: بەدوای شتێکی تەواو "سروشتی"دا دەگەڕێین
search_database([1.0, 0.0], "گەڕان بۆ سروشت")
# نموونەی سێیەم: بەدوای شتێکی "تێکەڵ" دەگەڕێین (نیوە بە نیوە)
search_database([0.5, 0.5], "گەڕان بۆ شتێکی تێکەڵ")
ئەنجامی کۆدەکە:
بەم شێوەیە دەبینیت کۆمپیوتەر تەنها بە بەکارهێنانی بیرکاری دەتوانێت “واتای” وشەکان لە یەک جیا بکاتەوە.
--- گەڕان بۆ تەکنەلۆژیا [0.0, 1.0] ---
لاپتۆپ 💻 : 0.99 | █████████
ڕۆبۆت 🤖 : 0.97 | █████████
مۆز 🍌 : 0.24 | ██
سێو 🍎 : 0.11 | █
--- گەڕان بۆ سروشت [1.0, 0.0] ---
سێو 🍎 : 0.99 | █████████
مۆز 🍌 : 0.97 | █████████
ڕۆبۆت 🤖 : 0.24 | ██
لاپتۆپ 💻 : 0.11 | █
--- گەڕان بۆ شتێکی تێکەڵ [0.5, 0.5] ---
مۆز 🍌 : 0.86 | ████████
ڕۆبۆت 🤖 : 0.86 | ████████
لاپتۆپ 💻 : 0.78 | ███████
سێو 🍎 : 0.78 | ███████
کۆتایی: پردێک لە نێوان مرۆڤ و ژمارەکان
ڤێکتەر داتابەیس تەنها ئامرازێکی نوێ نییە بۆ هەڵگرتنی زانیاری، بەڵکو گۆڕانکارییەکی بنەڕەتییە لە چۆنیەتی تێگەیشتنی کۆمپیوتەر لە جیهان. ئێمە لە سەردەمی “گەڕان بە وشە” وە چووینەتە سەردەمی “گەڕان بە واتا”.
وەک لە نموونە پراکتیکییەکاندا بینیمان، لە پشت هەموو ئەو زیرەکییەی کە لە ئەپڵیکەیشنی وەک (Spotify) یان (Google Photos) دەیبینین، سیحرێک بوونی نییە، تەنها بیرکارییەکی جوان هەیە. ڤێکتەر داتابەیس ئەو پردەیە کە زمانی ئاڵۆزی مرۆڤ (وێنە، دەق، دەنگ) دەگۆڕێت بۆ زمانی سادەی ژمارەکان، تا کۆمپیوتەر بتوانێت لێی تێبگات.
لەمڕۆدا، ئەگەر بتەوێت چاتبۆتێکی زیرەک، سیستەمێکی پێشنیارکردن، یان بزوێنەرێکی گەڕانی پێشکەوتوو دروست بکەیت، تێگەیشتن لە ڤێکتەر داتابەیس هەنگاوی یەکەم و هەرە گرنگە.

بۆچوونەکان