Local AI

Milvus ve Ollama ile Yüksek Verimli Kurumsal Arama İçin Yerel RAG Pipeline'ı Oluşturma

Yapay zekanın hızla gelişen dünyasında, veri gizliliği ve maliyet etkinliği kurumsal benimseme için hayati önem taşır. Bulut tabanlı Büyük Dil Modelleri (LLM'ler) etkileyici yetenekler sunsa da, genellikle önemli gecikme süresi ve uyumluluk riskleri getirir. İşte yerel AI altyapısı burada devreye girer. Milvus, yüksek performanslı bir vektör veritabanı ile Ollama, açık kaynaklı LLM'leri yerel olarak çalıştırmak için bir araç ile birleştirilerek, veriyi kuruluş içinde tutarken yüksek verimli arama yetenekleri sunan sağlam bir Geri Getirme-Artırılmış Üretim (RAG) pipeline'ı oluşturulabilir.

Neden Milvus ve Ollama?

RAG sistemleri, vektör benzerlik aramalarının hızına ve doğruluğuna büyük ölçüde dayanır. Geleneksel ilişkisel veritabanları, gömme vektörlerinin boyutluluğu ile başa çıkmakta zorlanır ve veri ölçeklendikçe darboğazlara yol açar. Milvus bu amaçla özel olarak tasarlanmıştır; alt milisaniye arama gecikme süresi ve ölçeklenebilir dağıtık mimariler sunar.

Llama 3 veya Mistral gibi modellerin dağıtımını kolaylaştıran Ollama ile birlikte kullanıldığında, çıkarımı tamamen yerel olarak yapma yeteneğine sahip olursunuz. Bu kombinasyon, harici API maliyetlerini ortadan kaldırır ve hassas kurumsal belgelerin asla güvenli ortamınızdan ayrılmadığını garanti eder.

Ortamın Kurulumu

Kod yazmadan önce, Milvus için Docker'ın yüklü olduğundan ve en son Ollama görüntüsünü çektiğinizden emin olun. Ayrıca milvus-client ve requests kütüphaneleri yüklü bir Python'a ihtiyacınız olacaktır. Gömme (embedding) işlemi için, tüm yığın bir bütünlük içinde tutulurken, Ollama'nın API'si aracılığıyla Ollama'nın yerleşik gömme yeteneklerini kullanacağız.

İlk olarak, Milvus'u Docker Compose kullanarak başlatın. Standart bir kurulum Etcd, MinIO ve Milvus Standalone bileşenini içerir. Çalıştıktan sonra, Milvus CLI veya Python istemcisi kullanarak bağlantıyı doğrulayabilirsiniz.

Gömme ve İndeksleme Mantığının Uygulanması

RAG pipeline'ımızın çekirdeği, metin belgelerini vektör görmelerine dönüştürmek ve bunları Milvus'ta saklamaktan oluşur. Bu gömmeleri oluşturmak için Ollama'nın API'sini kullanacağız. Aşağıda, Milvus'a bağlanma, bir koleksiyon oluşturma ve veri ekleme işlemlerini gösteren pratik bir Python örneği bulunmaktadır.

from pymilvus import connections, Collection, CollectionSchema, FieldSchema, DataType
import requests
import numpy as np

# Milvus'a bağlan
connections.connect(alias="default", host="localhost", port="19530")

# Koleksiyon şemasını tanımla
fields = [
    FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True),
    FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=768),
    FieldSchema(name="text", dtype=DataType.VARCHAR, max_length=512)
]
schema = CollectionSchema(fields, "Yerel RAG Koleksiyonu")
collection = Collection("RAG_Collection", schema)

def get_embedding(text):
    response = requests.post("http://localhost:11434/api/embeddings", json={
        "model": "nomic-embed-text",
        "prompt": text
    })
    return response.json()["embedding"]

# Örnek: Bir belge ekle
text_data = "Kurumsal güvenlik protokolleri çok faktörlü kimlik doğrulama gerektirir."
embedding = get_embedding(text_data)

insert_data = [
    [0],  # Otomatik oluşturulan ID yer tutucusu
    [embedding],
    [text_data]
]
collection.insert(insert_data)
collection.load()

# Hızlı arama için bir indeks oluştur
index_params = {
    "metric_type": "IP",  # İç Çarpım
    "index_type": "IVF_FLAT",
    "params": {"nlist": 128}
}
collection.create_index("vector", index_params)

Yüksek Verimli Aramanın Yürütülmesi

Verileriniz indekslendikten sonra, geri getirme aşaması basitleşir. Kullanıcının sorusunu vektör veritabanında sorgulayabilir, en semantik olarak benzer belgeleri alabilir ve yanıt oluşturma için bunları yerel LLM'nize bağlam olarak iletebilirsiniz. Milvus, vektör matematiğinin ağır işini üstlendiği için, milyonlarca kayıt olsa bile arama sonuçları milisaniyeler içinde döndürülür.

Sonuç

Milvus ve Ollama ile yerel bir RAG pipeline'ı oluşturmak sadece gizlilikle ilgili değildir; bu, ölçeklenebilir, maliyet etkin ve yüksek performanslı bir arama altyapısı oluşturmaktır. Vektör depolama için Milvus ve çıkarım için Ollama'dan yararlanarak, geliştiriciler hızdan veya doğruluktan ödün vermeden veri egemenliğine saygı duyan kurumsal düzeyde AI uygulamaları oluşturabilir. Küçük başlayın, indeksleme stratejilerinizde iterasyon yapın ve verileriniz büyüdükçe ölçeklendirin.

Share: