Apache Kafka + Vektör Veritabanı + LLM = Gerçek Zamanlı Generative AI (GenAI) ile Finansal Analiz

Umut Akbulut
BilgeAdam Teknoloji
4 min readJul 8, 2024

Günümüzde finansal verilerin gerçek zamanlı olarak analiz edilmesi, piyasa trendlerinin tahmin edilmesi ve yatırım stratejilerinin oluşturulması, başarılı bir finans yönetimi için kritik öneme sahiptir. Bu yazıda, Apache Kafka, Vektör Veritabanı ve Büyük Dil Modelleri (LLM) kullanarak nasıl kapsamlı bir finansal analiz ve tahmin sistemi oluşturabileceğimizi detaylarıyla inceleyeceğiz.

Apache Kafka Nedir?

Apache Kafka, yüksek hacimli veri akışlarını gerçek zamanlı olarak işleyebilen açık kaynaklı bir veri akışı platformudur. Dağıtık bir yapıya sahiptir ve veri üreticileri ile veri tüketicileri arasında düşük gecikmeli, yüksek hacimli veri transferini sağlar.

Apache Kafka’nın Temel Bileşenleri:

  • Topic (Konu): Verilerin kategorize edildiği bölümlerdir.
  • Producer (Üretici): Verileri Kafka’ya gönderen uygulamalar veya servislerdir.
  • Consumer (Tüketici): Kafka’dan veri okuyan uygulamalar veya servislerdir.
  • Broker (Aracı): Kafka sunucularıdır. Gelen verileri işler ve saklar.

Vektör Veritabanı Nedir?

Vektör veritabanları, yüksek boyutlu vektörlerin depolanması, aranması ve yönetilmesi için optimize edilmiş veri tabanlarıdır. GenAI uygulamalarında, özellikle büyük dil modelleri ile çalışırken, metin ve görsel verileri vektörler halinde temsil etmek yaygındır.

Vektör Veritabanlarının Avantajları:

  • Hızlı Arama: Yüksek boyutlu vektörlerde benzerlik aramaları hızlı bir şekilde gerçekleştirilir.
  • Ölçeklenebilirlik: Büyük veri kümeleri üzerinde etkili performans sunar.
  • Entegrasyon Kolaylığı: Apache Kafka gibi veri akışı platformları ile kolayca entegre edilebilir.

Büyük Dil Modelleri (LLM)

Büyük dil modelleri (LLM), geniş veri kümeleri üzerinde eğitilmiş derin öğrenme modelleridir. Bu modeller, dil anlama, dil üretme ve dil ile ilgili diğer görevlerde yüksek performans gösterir.

Öne Çıkan LLM’ler:

  • GPT-3/4: OpenAI tarafından geliştirilen bu modeller, doğal dil işleme görevlerinde üstün başarı sağlar.
  • BERT: Google tarafından geliştirilen bu model, özellikle dil anlama görevlerinde etkilidir.
  • T5: Google tarafından geliştirilen, dil dönüştürme görevlerinde kullanılan bir modeldir.

Gerçek Zamanlı Finansal Analiz Sistemi Tasarımı

1. Veri Akışı ve İşleme

Gerçek zamanlı finansal analiz sistemimizde, veri akışı ve işleme için Apache Kafka kullanacağız. Veriler, piyasa verileri, haber akışları, sosyal medya paylaşımları gibi çeşitli kaynaklardan üretilerek Kafka’ya gönderilir.

  • Üreticiler: Piyasa verileri sağlayıcıları, haber akışları, sosyal medya analiz araçları Kafka konularına (topics) yazar.
  • Aracılar: Verileri depolar ve tüketicilere iletir.
  • Tüketiciler: Verileri okur ve işleme başlar.

2. Vektör Dönüşümü ve Depolama

Kafka’dan gelen veriler, LLM kullanılarak vektörlere dönüştürülür. Bu vektörler, vektör veritabanına depolanır ve sorgulamalar için hazır hale getirilir.

  • LLM Dönüşümü: Veriler, büyük dil modelleri kullanılarak vektörlere dönüştürülür.
  • Vektör Veritabanı: Vektörler burada depolanır ve aranabilir hale gelir.

3. Gerçek Zamanlı Sorgulama ve Tahmin Üretimi

Kullanıcı sorguları veya diğer tetikleyiciler, vektör veritabanından benzer vektörleri arar. Bulunan vektörler, LLM kullanılarak doğal dilde analizler ve tahminler üretmek için kullanılır.

  • Sorgulama: Kullanıcı sorguları vektör veritabanına gönderilir.
  • Arama: Benzer vektörler bulunur.
  • Tahmin Üretimi: LLM kullanılarak doğal dilde analizler ve tahminler üretilir.

Apache Kafka Kurulumu ve Yapılandırması

Apache Kafka’yı kurmak için aşağıdaki adımları izleyebilirsiniz:

# Kafka'yı indirin ve açın
wget https://archive.apache.org/dist/kafka/2.8.0/kafka_2.13-2.8.0.tgz
tar -xzf kafka_2.13-2.8.0.tgz
cd kafka_2.13-2.8.0

# Zookeeper'ı başlatın
bin/zookeeper-server-start.sh config/zookeeper.properties

# Kafka Broker'ı başlatın
bin/kafka-server-start.sh config/server.properties

LLM Kullanarak Vektör Dönüşümü

Python kullanarak OpenAI’nin GPT-3/4 modelini kullanarak finansal verileri vektörlere dönüştürebilirsiniz:

import openai

openai.api_key = 'API_KEY'

def metin_to_vektor(metin):
response = openai.Embedding.create(
model="text-embedding-ada-002",
input=metin
)
vektor = response['data'][0]['embedding']
return vektor

Vektör Veritabanı Kullanımı

Vektör veritabanı olarak Milvus veya Pinecone gibi bir servis kullanabilirsiniz. Milvus örneği:

from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType

connections.connect()

fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
FieldSchema(name="vektor", dtype=DataType.FLOAT_VECTOR, dim=768)
]
schema = CollectionSchema(fields, "Vektör verileri için koleksiyon")

collection = Collection("vektor_collection", schema)

def vektor_ekle(vektor):
collection.insert([[1], [vektor]])

Gerçek Zamanlı Finansal Sorgulama ve Tahmin Üretimi

Kullanıcı sorguları alındığında, vektör veritabanından benzer vektörleri arayabilir ve LLM kullanarak tahminler ve analizler üretebilirsiniz:

def benzer_vektor_bul(sorgu_vektor):
search_params = {"metric_type": "L2", "params": {"nprobe": 10}}
results = collection.search([sorgu_vektor], "vektor", search_params)
return results

def tahmin_uret(vektor):
response = openai.Completion.create(
engine="text-davinci-002",
prompt=f"Bu finansal vektöre göre en uygun tahmini üret: {vektor}",
max_tokens=50
)
tahmin = response.choices[0].text.strip()
return tahmin

Kapsamlı Örnek: Gerçek Zamanlı Piyasa Analizi

Bu sistemin gerçek hayatta nasıl kullanılabileceğini gösteren kapsamlı bir örnek yapalım. Finansal veri sağlayıcıları, sosyal medya analiz araçları ve haber kaynaklarından gelen verileri gerçek zamanlı olarak analiz eden ve tahminler üreten bir sistem geliştireceğiz.

1. Apache Kafka ile Veri Akışı

Finansal veri sağlayıcıları, sosyal medya analiz araçları ve haber kaynaklarından gelen veriler, Apache Kafka’ya gönderilir.

from kafka import KafkaProducer
import json

producer = KafkaProducer(bootstrap_servers='localhost:9092',
value_serializer=lambda v: json.dumps(v).encode('utf-8'))

# Piyasa verisi gönderimi
market_data = {'symbol': 'AAPL', 'price': 150.75, 'volume': 10000}
producer.send('market_data', market_data)

# Sosyal medya verisi gönderimi
social_media_data = {'text': 'Apple stock is soaring!', 'sentiment': 'positive'}
producer.send('social_media_data', social_media_data)

# Haber verisi gönderimi
news_data = {'headline': 'Apple releases new iPhone', 'content': 'The new iPhone is expected to be a game changer.'}
producer.send('news_data', news_data)

2. Verilerin Vektörlere Dönüştürülmesi ve Depolanması

Kafka’dan gelen veriler, büyük dil modelleri kullanılarak vektörlere dönüştürülür ve vektör veritabanına depolanır.

from kafka import KafkaConsumer

consumer = KafkaConsumer('market_data', 'social_media_data', 'news_data',
bootstrap_servers='localhost:9092',
value_deserializer=lambda v: json.loads(v.decode('utf-8')))

for message in consumer:
data = message.value
if 'price' in data:
metin = f"{data['symbol']} price is {data['price']}"
elif 'sentiment' in data:
metin = f"{data['text']} with sentiment {data['sentiment']}"
else:
metin = f"{data['headline']} - {data['content']}"

vektor = metin_to_vektor(metin)
vektor_ekle(vektor)

3. Gerçek Zamanlı Sorgulama ve Tahmin Üretimi

Kullanıcıların sorguları, vektör veritabanına gönderilir ve benzer vektörler bulunarak tahminler üretilir.

# Kullanıcıdan gelen bir sorgu
sorgu = "What is the expected price movement for Apple?"

# Sorgunun vektöre dönüştürülmesi
sorgu_vektoru = metin_to_vektor(sorgu)

# Benzer vektörlerin bulunması
sonuclar = benzer_vektor_bul(sorgu_vektoru)

# Tahminlerin üretilmesi
for sonuc in sonuclar:
tahmin = tahmin_uret(sonuc)
print(tahmin)

Sonuç

Apache Kafka, Vektör Veritabanı ve Büyük Dil Modelleri (LLM) kullanarak gerçek zamanlı bir finansal analiz ve tahmin sistemi oluşturmak, modern finans dünyasında güçlü ve ölçeklenebilir bir çözüm sunar. Bu teknolojilerin entegrasyonu, hızlı veri işleme, etkili veri depolama ve güçlü dil modelleri ile zenginleştirilmiş analizler ve tahminler üretmeyi mümkün kılar. Umarım bu rehber, kendi GenAI çözümlerinizi oluşturmanız için size ilham verir.

--

--

Umut Akbulut
BilgeAdam Teknoloji

"Tech leader & Software Architect. Passionate about digital transformation, microservices, and innovation in the finance and tech sectors."