24 पॉइंट द्वारा GN⁺ 2024-04-18 | 1 टिप्पणियां | WhatsApp पर शेयर करें

ऐप डेवलपर्स के लिए Embeddings उपयोग गाइड

  • Vector embeddings विभिन्न इनपुट्स के बीच समानता मापने में प्रभावी होते हैं, इसलिए ये search और recommendation features के लिए उपयुक्त हैं। यह French या Japanese जैसी दूसरी भाषाओं में भी अच्छी तरह काम करते हैं।
  • Pgvector, Postgres का एक extension है जिसमें embeddings को store और query किया जा सकता है। यह नया service जोड़े बिना SQL logic और embedding operations को जोड़ने की सुविधा देता है, इसलिए यह काफ़ी शक्तिशाली है।
  • LLM से अलग, embeddings का उपयोग सामान्य deterministic code जैसा अनुभव देता है।

आइकन search और recommendation project विकास

  • Pgvector setup के बाद, icon data को embedding vectors में encode करने की रणनीति बनाई जाती है।
  • OpenAI के text-embedding-3-small मॉडल का उपयोग।
  • Cosine similarity के ज़रिए search query और हर icon embedding के बीच समानता मापी जाती है।
  • Embedding search के साथ iconset filtering जैसी business logic को जोड़ा जाता है।
  • Search query के लिए icon click data का उपयोग करने वाले ranking algorithm का उदाहरण दिया गया है।
  • चुने गए icon से मिलते-जुलते icons recommend करने के लिए embeddings comparison का उपयोग।

implementation approach सारांश

  • Vector DB के रूप में pgvector/Postgres चुना गया। MongoDB आदि दूसरे विकल्प भी मौजूद हैं।
  • Development Typescript में, और drizzle-orm का उपयोग। दूसरी languages/frameworks के लिए भी कई libraries उपलब्ध हैं।
  • App को Neon पर host किया गया है। fly.io, Supabase जैसी managed DB hosting services भी इस्तेमाल की जा सकती हैं।
  • OpenAI के text-embedding-3-small embedding model का उपयोग। Huggingface leaderboard से दूसरे models भी चुने जा सकते हैं।
  • Icon properties में से search relevance अधिक रखने वाली चीज़ों को key-value pairs के रूप में embed किया जाता है।
  • Distance function के रूप में Cosine similarity का उपयोग। Pgvector l2 distance और inner product भी support करता है।
  • Search results को top 50 तक सीमित रखा गया। Distance range का उपयोग करते समय इसे थोड़ा व्यापक रखकर limit के साथ इस्तेमाल करने की सिफारिश है।

GN⁺ की राय

  • ज़्यादातर projects में pgvector की तरह मौजूदा DB में vector functionality जोड़ने का तरीका काफ़ी होगा। अलग vector DB अपनाने की ज़रूरत शायद बड़े पैमाने की services में ही पड़े।
  • Embedding search में business logic को स्वाभाविक रूप से जोड़ पाना एक बड़ा फ़ायदा है। SQL की ताकत का पूरा उपयोग किया जा सकता है।
  • Ranking algorithm में user feedback data को शामिल करने का विचार अच्छा है। इससे search accuracy को लगातार बेहतर किया जा सकता है।
  • LLM की तुलना में embedding-आधारित services का व्यवहार अधिक स्पष्ट होता है और debugging भी आसान होती है, इसलिए इन्हें वास्तविक service में लागू करना कहीं अधिक सरल लगता है।
  • कई open source embedding models उपलब्ध हैं, इसलिए अगर अपना model विकसित करना कठिन हो, तब भी high-quality embeddings का आसानी से उपयोग किया जा सकता है।

1 टिप्पणियां

 
GN⁺ 2024-04-18
Hacker News राय

Hacker News टिप्पणियों का सार

RAG मॉडल का उपयोग करके दस्तावेज़ embedding और similarity search की सुविधा

  • sentence-transformers और faiss लाइब्रेरी का उपयोग करके आसानी से document embedding और similarity search लागू किया जा सकता है
  • New York Times के recommendation system से बेहतर performance दिखाना एक मज़ेदार project हो सकता है
  • James Briggs के YouTube चैनल पर इससे जुड़ी सामग्री अच्छी तरह समझाई गई है

embedding की बुनियादी अवधारणा को समझना

  • AI/deep learning के बिना भी शब्दों को unique index देकर, frequency के आधार पर values accumulate करने के तरीके से embedding बनाई जा सकती है
  • cosine similarity आदि का उपयोग करके similarity search भी संभव है
  • deep learning आधारित embedding, इन्हीं बुनियादी अवधारणाओं के ऊपर word/token filtering, synonym handling जैसी सुविधाएँ जोड़ती है

embedding generation process पर विस्तृत विवरण की कमी

homonym handling की कठिनाई

  • homonym की वजह से search results अनपेक्षित रूप से आ सकते हैं (उदाहरण: "king" खोजने पर ruler(शासक) icon आना)
  • संबंधित icons ढूँढ़ पाने का फायदा होने के साथ यह एक मज़ेदार चुनौती भी हो सकती है

vector store के बिना भी embedding का उपयोग संभव

  • बड़े डेटा वाले production environment में latency जैसी वजहों से vector store महत्वपूर्ण होता है, लेकिन toy project स्तर पर Numpy आदि से सरल implementation संभव है
  • Numpy के @ operator का उपयोग करके normalized query vector और record matrix के बीच dot product निकालकर similarity की गणना की जा सकती है

local environment में embedding logic चलाने का तरीका

  • OpenAI API पर निर्भर हुए बिना local environment या database में सीधे embedding generate करने के तरीकों पर जिज्ञासा व्यक्त की गई

technical documentation लिखने में embedding के उपयोग की संभावना

  • ChatGPT के आने के बाद technical writers के बीच semantic search tool के रूप में इसके उपयोग की संभावना पर सक्रिय चर्चा हो रही है
  • documentation लिखने के लिए ज़रूरी research चरण में efficiency बढ़ाने में यह मदद कर सकता है

embedding को store और उपयोग करने के तरीके

  • embedding generate करके store करना, फिर ज़रूरत पड़ने पर उसे load करके उपयोग करना सामान्य तरीका है
  • सरल मामलों में embedding को सीधे array आदि के रूप में पास करके भी उपयोग किया जा सकता है
  • embedding store करना कठिन हिस्सा है, लेकिन इसके लिए कोई विशेष database ज़रूरी नहीं; SQLite के BLOB आदि से भी यह संभव है
  • embedding कभी 'expire' नहीं होती

AI में शुरुआत करने वाले developers के लिए पृष्ठभूमि ज्ञान की व्याख्या की कमी

  • लेख में embedding या vector database जैसी अवधारणाओं को समझाए बिना सीधे उपयोग के तरीके पर चला गया है
  • AI में रुचि रखने वाले app developers के लिए अच्छा शुरुआती बिंदु खोजने वालों को शायद इन संबंधित अवधारणाओं का परिचय चाहिए था