paint-brush
Alma-Artırılmış Üretim (RAG) ve Vektör Veritabanı Entegrasyonu ile Kurumsal LLM'leri Yükseltmeile@vpenikal
4,045 okumalar
4,045 okumalar

Alma-Artırılmış Üretim (RAG) ve Vektör Veritabanı Entegrasyonu ile Kurumsal LLM'leri Yükseltme

Çok uzun; Okumak

Bu blog, kurumsal uygulamalarda Dil Öğrenme Modellerini (LLM'ler) geliştirmek için Almayla Artırılmış Üretimin (RAG) vektör veritabanlarıyla, özellikle de Milvus ile entegrasyonunu araştırıyor. Yüksek Lisans'ın zorluklarını kapsar, RAG ve vektör veritabanlarını tanıtır ve pratik örnekler ve eğitimler sağlar. Blog, kurulum ve yapılandırma da dahil olmak üzere RAG ve Milvus için yerel ortamın kurulumunu ayrıntılarıyla anlatıyor ve kurumsal yapay zeka uygulamalarında yapay zeka odaklı yanıtları ve bağlamsal anlayışı geliştirmek için bu teknolojileri birleştirmenin önemli potansiyeliyle sonuçlanıyor.
featured image - Alma-Artırılmış Üretim (RAG) ve Vektör Veritabanı Entegrasyonu ile Kurumsal LLM'leri Yükseltme
Venkata Karthik Penikalapati HackerNoon profile picture


Yüksek Lisans Uygulamalarını Bağlama Duyarlı Teknolojilerle Geliştirme

Büyük Dil Modellerinin uygulamaları çeşitli sektörlerde dönüştürücü etki yaratarak doğal dil işleme ve anlamada yeni bir çığır açmıştır. İnsan benzeri metinler üretmesiyle tanınan Yüksek Lisans'lar, sohbet robotlarında, içerik oluşturmada ve hatta karmaşık problem çözme görevlerinde devrim yarattı.


Bununla birlikte, etkileyici yeteneklerine rağmen, Yüksek Lisanslar, özellikle bağlam farkındalığı ve uzun süreli etkileşimlerde doğruluğun korunması konularında dikkate değer zorluklarla karşı karşıyadır. Yaygın bir tuzak, oluşturulan içeriğin akıcı olmasına rağmen yanlışlığa veya ilgisizliğe sürüklenebileceği " halüsinasyonlara " olan eğilimleridir.


Geri Almayla Artırılmış Üretim (RAG) ve vektör veritabanları gibi teknolojilerin önemli hale geldiği yer burasıdır. LLM'leri geniş veri kümelerinden ilgili bilgileri dinamik olarak alan RAG ile entegre ederek bu sınırlamaları önemli ölçüde azaltabiliriz. Yapılandırılmış vektör verilerini verimli bir şekilde işleme ve alma kapasitesine sahip Yüksek Lisans'lar ve vektör veritabanları arasındaki sinerji, Yüksek Lisans uygulamalarına yeni bir derinlik, bağlam ve güvenilirlik düzeyi getirmeyi vaat ediyor.


Bu blogda okuyucular şunları bekleyebilir:


  • Yüksek Lisans Zorluklarına İlişkin Kapsamlı Anlayışlar : Yüksek Lisans'ın bağlam farkındalığı ve doğruluk sorunları gibi sınırlamalarını anlamak.
  • RAG ve Vektör Veritabanlarına Giriş : Bu tekniklerin geleneksel Yüksek Lisans'ın dezavantajlarını nasıl giderdiğinin araştırılması.
  • Pratik Gösterimler ve Öğreticiler : LLM uygulamalarını geliştirmek için RAG'ın vektör veritabanlarıyla entegrasyonunu gösteren uygulamalı örnekler.
  • Gerçek Dünya Uygulamaları : Bu entegrasyonların kurumsal ortamlarda nasıl etkili bir şekilde uygulanabileceğinin araştırılması.
  • Çeşitli Hedef Kitleler için Eyleme Geçirilebilir Bilgi : İster bir teknoloji meraklısı, ister yapay zeka uygulayıcısı, ister iş uzmanı olun, blog değerli bilgiler ve pratik bilgiler sağlamayı amaçlamaktadır.



Almayla Artırılmış Üretimi (RAG) Anlamak

Almayla Artırılmış Üretim (RAG), yapay zeka ve doğal dil işleme alanında yenilikçi bir paradigmadır. Bilgi erişimini dil oluşturma sürecine entegre ederek geleneksel dil modellerinden önemli bir değişimi işaret ediyor. Bu hibrit yaklaşım, yapay zeka modellerinin yalnızca bağlamsal olarak doğru değil, aynı zamanda dış veri kaynaklarından gelen güncel bilgilerle aşılanmış yanıtlar üretme yeteneğini de geliştiriyor.


RAG'ın başlangıcı, GPT (Generative Pre-trained Transformer) gibi standart dil modellerinin sınırlamalarının üstesinden gelme arayışına kadar uzanabilir. Geleneksel modeller, tutarlı metin oluşturma konusundaki yeterliliklerine rağmen, özellikle belirli, gerçek zamanlı bilgi gerektiren sorgular için genellikle doğru, gerçeğe dayalı yanıtlar sağlama konusunda zorluk çeker.




RAG akışı




Geri Almayla Artırılmış Üretimin (RAG) bir vektör veritabanıyla entegre olarak nasıl çalıştığına ilişkin bir açıklama aşağıda verilmiştir:


  1. Alma ve Dizine Ekleme : İş akışı, sistemin zekasının temeli olan kapsamlı bir Bilgi Tabanı ile başlar. Bu Bilgi Tabanı genellikle kullanıcılar tarafından sorgulanabilecek bilgileri içeren geniş bir belge külliyatından oluşur. Bu belgeler SSS sayfalarından ve makalelerden yapılandırılmış bilgi veritabanlarına kadar her şey olabilir. Bu belgeler kullanılmadan önce, ön işleme tabi tutuldukları ve yerleştirmelere dönüştürüldükleri bir alım sürecinden geçerler. Metinsel bilgileri vektör yerleştirmelerine dönüştürmek için genellikle karmaşık bir makine öğrenme algoritması olan Gömme Modeli kullanılır. Bu yerleştirmeler, belgelerin semantik içeriğini çok boyutlu bir alanda sayısal olarak temsil eder; bu da benzerlik karşılaştırmaları için idealdir.


  2. Müşteri Etkileşimi : Her şey müşterinin bir uygulamayla etkileşime girmesi ve bir sorgu sormasıyla başlar. Bu sorgu, müşterinin yapay zekanın yanıtlamasını beklediği bir bilgi talebi veya sorudur.


  3. Sorgu Yerleştirme : Ham müşteri sorgusu daha sonra bir Yerleştirme Modeli tarafından işlenir. Bu model, metin sorgusunu, sorgunun anlamsal anlamını yüksek boyutlu bir alanda yakalayan sayısal bir temsil olan bir vektöre dönüştürür.


  4. Vektör Veritabanı Araması : Sorgu vektörü, yüksek boyutlu vektör verilerini işlemek için tasarlanmış özel bir veritabanı olan Vektör Veritabanına gönderilir. Veritabanı, en alakalı belge yerleştirmelerini almak için bir benzerlik araması gerçekleştirir. Bu yerleştirmeler, sisteme alınan bir Bilgi Tabanından önceden işlenmiş bilgiyi temsil eder.


  5. Bağlam Alma : Alınan belge katıştırmaları, hem sorguyu hem de ilgili bağlamı içeren bir bilgi istemi oluşturmak için orijinal sorguyla birleştirilir.


  6. Dil Modeli Yanıt Oluşturma : Bu zenginleştirilmiş istem daha sonra bir Dil Öğrenme Modeline (LLM) beslenir. LLM, doğru, bilgilendirici ve müşterinin sorgusuyla bağlamsal olarak alakalı bir yanıt oluşturmak için alınan belgelerdeki bağlamı kullanır.


  7. Üretken Yanıt : Son olarak LLM, uygulama aracılığıyla müşteriye geri gönderilen üretken bir yanıt üretir. Bu yanıt yalnızca modelin önceden eğitilmiş bilgisine dayanmakla kalmaz, aynı zamanda bilgi tabanından alınan belirli bilgilerle de zenginleştirilir ve bu da onu kullanıcının isteğine son derece uygun hale getirir.

Vektör Veritabanları

Vektör veritabanları, sayısal vektör biçimine dönüştürülmüş verileri, genellikle modelleri makine öğrenimine yerleştirme gibi işlemler aracılığıyla depolar ve yönetir. Yerleştirmeler, orijinal girdinin anlamsal veya bağlamsal özelliklerini yakalayan, genellikle yüksek boyutlu vektörler olmak üzere verilerin sayısal temsilleridir. Metin verileri söz konusu olduğunda, yerleştirmeler kelimeleri, cümleleri veya tüm belgeleri bilgisayarın işleyebileceği bir forma dönüştürür. Benzer anlamların vektör uzayında yakın olması için bu yerleştirmeleri oluşturmak için makine öğrenimi modelleri, özellikle de sinir ağları kullanılır. Bu veritabanları, vektör uzayı içindeki belirli bir sorgu vektörüne en yakın veri noktalarını konumlandıran benzerlik aramalarını verimli bir şekilde gerçekleştirmek üzere tasarlanmıştır.



kaynak - https://www.sbert.net/examples/applications/semantic-search/README.html



İşte sürece daha derinlemesine bir bakış:


  1. Veri Depolama : Belgeler alındığında, bir gömme modeli (sinir ağı gibi) metni yüksek boyutlu bir vektöre dönüştürür. Her vektör belgenin anlamsal anlamını sayısal biçimde temsil eder. Bu vektörler daha sonra vektör veritabanında saklanır.


  2. İndeksleme : Hızlı erişimi kolaylaştırmak için veritabanı, Ters Dosya Dizini (IVF) veya Hiyerarşik Gezinilebilir Küçük Dünya (HNSW) gibi yüksek boyutlu alanlara uygun algoritmalar kullanarak bu vektörler üzerinde bir dizin oluşturur. Dizin türünün seçimi, aramanın hızı ve doğruluğu arasında denge kurar.


  3. Benzerlik Araması : Bir sorgu yapıldığında aynı gömme modeli kullanılarak bu sorgu da vektöre dönüştürülür. Vektör veritabanı daha sonra sorgu vektörüne en çok benzeyen vektörleri hızlı bir şekilde bulmak için dizini kullanır. Benzerlik, Öklid mesafesi veya kosinüs benzerliği gibi mesafe ölçümleriyle belirlenir.


Gömmelerin Avantajları :


  1. Semantik Benzerlik : Yerleştirmeler, semantik olarak benzer öğelerin vektör uzayında daha yakın olacağı şekilde tasarlanarak sistemlerin bağlamı ve anlamı anlamasını sağlar. Örneğin genomik alanında, gen ekspresyonu verileri, farklı genler ve fenotipler arasındaki ilişkileri gösteren kalıpları ortaya çıkarmak için yerleştirmeler olarak kodlanabilir. Bu, geleneksel analizlerle belirgin olmayabilecek hastalıklara yönelik biyobelirteçlerin belirlenmesine yardımcı olabilir.


  2. Karmaşık İlişkiler : Verilerdeki geleneksel temsillerle gözden kaçabilecek karmaşık ilişkileri ve nüansları yakalayabilirler. Netflix veya Spotify gibi yayın hizmetlerinin kullandığı tavsiye sistemlerinde pratik bir uygulama görülüyor. Bu platformlar, kullanıcı tercihlerini ve içerik özelliklerini anlamak için yerleştirmeleri kullanır ve böylece kullanıcının önceki seçimleriyle benzerlik taşıyan filmler veya şarkılar önerir. İçerikteki çeşitliliğe rağmen yerleştirmeler, kullanıcı tüketimindeki daha derin kalıpları dikkate alarak türün veya sanatçının ötesine geçen incelikli önerilere olanak tanır.


  3. Tekdüzelik : Gömmeler, çeşitli veri türlerini tek tip bir vektör formatına dönüştürerek karşılaştırma ve alma gibi işlemleri basitleştirir.


Vector DB'ye Başlarken

RAG ve Vector DB ( Milvus ) için yerel bir geliştirme ortamı oluşturmak birkaç önemli adımı içerir.


İşte yapılandırılmış bir kılavuz:


  1. Önkoşullar :

    • Sisteminizde Python 3.6+ sürümünün kurulu olduğundan emin olun.

    • Milvus'u çalıştırmak için Docker gereklidir.


  2. Sanal çevre :

    • Yeni bir sanal ortam oluşturun ve şunu kullanın:

       python3 -m venv rag-milvus-env source rag-milvus-env/bin/activate # Install supporting dependencies pip install transformers datasets faiss-cpu torch sentence-transformers pymilvus


  3. Milvus docker'ı kullanıyor :

  • Milvus Docker görüntüsünü çekin ve çalıştırın: (diğer vektör veri tabanlarını da kullanabilirsiniz)

  • Aşağıdaki adımları kullanabilir veya burada sağlanan başlangıç kılavuzunu takip edebilirsiniz.


     docker pull milvusdb/milvus:latest docker run -d --name milvus_cpu -p 19530:19530 -p 19121:19121 milvusdb/milvus:latest


  • Kurulum Verileri :

    Şimdi bazı örnek verileri indirmeyi, yerleştirmeler oluşturmayı ve bunları bir koleksiyona eklemeyi deneyelim.

     import requests import csv url = "http://qim.fs.quoracdn.net/quora_duplicate_questions.tsv" # Download the file response = requests.get(url) response.raise_for_status() # This will raise an error if the download failed # Decode the content and split into lines lines = response.content.decode('utf-8').splitlines() questions = [] # Process the lines reader = csv.reader(lines, delimiter='\t') next(reader) # Skip the header row for row in reader: questions.extend([row[1], row[4]]) # Assuming the questions are in the 2nd and 3rd columns questions = questions[:10000]


  • Gömmeler Oluştur

     from sentence_transformers import SentenceTransformer # transformer to create embeddings model = SentenceTransformer('all-MiniLM-L6-v2') embeddings = model.encode(questions)


  • DB vektörüne ekleyin.

     # connect to db connections.connect() embedding_size = 384 # Prepare the collection schema fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True), FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=embedding_size) ] schema = CollectionSchema(fields, "questions") collection = Collection("questions", schema) # Insert the document embeddings mr = collection.insert([embeddings]) # to get document, in practice this would be some external DB. id_to_question = {str(mr.primary_keys[i]): questions[i] for i in range(len(questions))} # List all collections collections = list_collections() print(collections)


  • Koleksiyonu indeksleyin.

     from pymilvus import Collection index_params = { "metric_type": "L2", "index_type": "HNSW", # Index of type HNSW, refer to docs for other types. "params": { "M": 16, # Example value, adjust as needed "efConstruction": 200 } } collection = Collection("questions") collection.create_index( field_name="embedding", index_params=index_params )


  • Belgeleri Sorgula

     query = "What is artificial intelligence?" query_embedding = model.encode(query) collection.load() # Define search parameters search_params = {"metric_type": "L2", "params": {"nprobe": 10}} # Perform the search results = collection.search( data=[query_vector], anns_field="embedding", param=search_params, limit=10, expr=None, consistency_level="Strong" ) # Process results for result in results: milvus_id = str(result.id) # Convert ID to string for dictionary lookup original_question = id_to_question[milvus_id] print(f"Milvus ID: {milvus_id}, Similar Question: {original_question}")


Vector db'den anlamsal olarak benzer belgeler aldığımızda, bu bağlam + giriş sorgusunu LLM'lere aktarabiliriz; bu, LLM'lerin artık içeriğe sahip olması nedeniyle çok daha iyi sonuçlara sahip olacaktır.


Çözüm

Sonuç olarak, RAG'ın Milvus gibi vektör veritabanlarıyla entegrasyonu, LLM uygulamalarındaki en acil zorluklardan bazılarına, özellikle de derin bağlamsal anlayış ve dinamik bilgi erişimi gerektirenlere güçlü bir çözüm sunuyor. İşletmeler, LLM'lerin üretken becerisini vektör veritabanlarının hassasiyeti ve verimliliği ile birleştirerek, yapay zeka odaklı yanıtların alaka düzeyini ve doğruluğunu büyük ölçüde geliştirebilir ve kullanıcılara değerli ve bağlamsal açıdan zengin etkileşimler sağlayabilir.


Yapay zeka ilerlemeye devam ettikçe, bu teknolojilerin birleşimi yalnızca bir adımı değil, ileriye doğru bir sıçramayı temsil ediyor ve yapay zekanın tüm sektörlerde daha karmaşık, çeşitli ve incelikli uygulamaları destekleyebileceği bir geleceğin habercisi oluyor. Bu blog, yenilikçilerin ve uygulayıcıların bu araçları denemeye başlamaları ve kurumsal yapay zeka uygulamaları alanında mümkün olanın sınırlarını zorlamaları için zemin hazırladı.