VectorDB Görselleştirme ve Analiz Araçları Raporu

Yönetici Özeti

Geleneksel veritabanlarında Tableau ve Power BI gibi BI araçları veriyi analiz etmekte ve görselleştirmekte standart çözümlerdir. Vektör veritabanları (VectorDB) ekosisteminde ise benzer işlevleri yerine getiren, embedding vektörlerini görselleştiren, sınıflandırma kalitesini ölçen ve kümeleme analizleri sunan araçlar bulunmaktadır. Bu rapor, mevcut araçları kategorilere ayırarak incelemekte ve akademik Türkçe veri çalışmaları için en uygun yaklaşımları önermektedir.

Temel fark şudur: geleneksel BI'da veri zaten anlaşılır boyutlardadır (satır, sütun, sayı, tarih). VectorDB'de ise veri 768 veya 1024 boyutlu vektörlerdir ve insan gözüyle doğrudan anlaşılamaz. Bu yüzden VectorDB araçlarında her zaman bir boyut indirgeme adımı (UMAP, t-SNE, PCA) bulunur; bu da belirli ölçüde bilgi kaybı anlamına gelir.


1. Embedding Görselleştirme Araçları (Boyut İndirgeme + Scatter Plot)

1.1 Nomic Atlas

from nomic import atlas
import numpy as np

embeddings = np.load("embeddings.npy")
metadata = [{"text": t, "label": l} for t, l in zip(texts, labels)]

project = atlas.map_data(
    embeddings=embeddings,
    data=metadata,
    id_field="text",
    topic_model=True  # Otomatik küme etiketleme
)

1.2 Embedding Projector (TensorBoard)

import tensorflow as tf
from tensorboard.plugins import projector

embedding_var = tf.Variable(embeddings, name="embeddings")
checkpoint = tf.train.Checkpoint(embedding=embedding_var)
checkpoint.save("logs/embedding.ckpt")

with open("logs/metadata.tsv", "w") as f:
    for label in labels:
        f.write(f"{label}\n")

config = projector.ProjectorConfig()
emb = config.embeddings.add()
emb.tensor_name = "embedding/.ATTRIBUTES/VARIABLE_VALUE"
emb.metadata_path = "metadata.tsv"
projector.visualize_embeddings("logs", config)

# Çalıştırma: tensorboard --logdir=logs

1.3 Renumics Spotlight

import pandas as pd
from renumics import spotlight

df = pd.DataFrame({
    "text": texts,
    "label": labels,
    "embedding": list(embeddings),
})

spotlight.show(df, embed=["embedding"])

2. VectorDB Dahili Görselleştirme Araçları

2.1 Qdrant Dashboard

# Docker ile Qdrant başlatma
# docker run -p 6333:6333 qdrant/qdrant
# Dashboard: http://localhost:6333/dashboard

from qdrant_client import QdrantClient
client = QdrantClient("localhost", port=6333)

client.create_collection("turkish_docs", vectors_config={
    "size": 1024, "distance": "Cosine"
})

2.2 Weaviate Console

{
  Get {
    TurkishDocument(
      nearText: { concepts: ["yapay zeka"] }
      limit: 10
    ) {
      title
      content
      _additional { distance certainty }
    }
  }
}

2.3 ChromaDB Visualizer

import chromadb

client = chromadb.Client()
collection = client.get_collection("turkish_docs")
results = collection.peek()

3. Tam Kapsamlı BI-Tarzı Platformlar

3.1 Activeloop Deep Lake

import deeplake

ds = deeplake.dataset("hub://user/turkish-embeddings")
ds.create_tensor("text", htype="text")
ds.create_tensor("embedding", htype="embedding")
ds.create_tensor("label", htype="class_label")

ds.append({"text": texts, "embedding": embeddings, "label": labels})
ds.visualize()  # Web UI açılır

3.2 Arize Phoenix

import phoenix as px

session = px.launch_app()

ds = px.Inferences(
    dataframe=df,
    schema=px.Schema(
        feature_column_names=["text"],
        embedding_column_names={"embedding": px.EmbeddingColumnNames(
            vector_column_name="embedding",
            raw_data_column_name="text"
        )}
    )
)

# Dashboard: http://localhost:6006

4. Python Kütüphaneleri (Kod Tabanlı)

4.1 UMAP + Matplotlib/Plotly

import umap
import plotly.express as px
import numpy as np

reducer = umap.UMAP(n_components=2, metric="cosine", random_state=42)
coords = reducer.fit_transform(embeddings)

fig = px.scatter(
    x=coords[:, 0], y=coords[:, 1],
    color=labels,
    hover_data={"text": texts},
    title="Embedding Kümeleri"
)
fig.show()

4.2 Sentence-Transformers Dahili Görselleştirme

from sentence_transformers import SentenceTransformer, util
import seaborn as sns
import matplotlib.pyplot as plt

model = SentenceTransformer("BAAI/bge-m3")
embs = model.encode(texts)

sim_matrix = util.cos_sim(embs, embs).numpy()
sns.heatmap(sim_matrix, xticklabels=texts, yticklabels=texts)
plt.title("Cosine Similarity Matrisi")
plt.show()

4.3 Weights & Biases (W&B)

import wandb

wandb.init(project="turkish-embeddings")

table = wandb.Table(columns=["text", "label", "embedding"])
for t, l, e in zip(texts, labels, embeddings):
    table.add_data(t, l, wandb.Embedding(e))

wandb.log({"embeddings": table})

5. Karşılaştırma Özeti

Araç Tür Maliyet Scatter Plot Kümeleme Drift Ölçek Kurulum
Nomic Atlas Platform Freemium UMAP 2D Otomatik Yok 10M+ Kolay
TensorBoard Projector Kütüphane Ücretsiz PCA/t-SNE/UMAP 3D Manuel Yok ~100K Orta
Renumics Spotlight Kütüphane Ücretsiz UMAP 2D Otomatik Yok ~500K Kolay
Qdrant Dashboard VectorDB Ücretsiz Yok Yok Yok Sınırsız Dahili
Weaviate Console VectorDB Ücretsiz Yok Yok Yok Sınırsız Dahili
ChromaDB Visualizer VectorDB Ücretsiz UMAP 2D Yok Yok ~100K Kolay
Deep Lake Platform Freemium 2D/3D Manuel Versiyonlama Sınırsız Orta
Arize Phoenix Platform Ücretsiz UMAP 2D Otomatik Evet ~1M Orta
UMAP + Plotly Kütüphane Ücretsiz UMAP/t-SNE 2D Manuel Manuel ~100K Kolay
Sentence-Transformers Kütüphane Ücretsiz PCA 2D Yok Yok ~10K Kolay
W&B Platform Freemium 3D Manuel Epoch bazlı ~500K Orta

6. Akademik Türkçe Veri Çalışmaları İçin Önerilen Yaklaşım

Akademik Türkçe verilerle embedding kalitesini değerlendirmek için üç katmanlı bir yaklaşım önerilmektedir:

Katman 1 — Hızlı keşifsel analiz: UMAP + Plotly kombinasyonu ile Jupyter notebook'ta doğrudan çalışılabilir. Herhangi bir harici servise bağımlılık yoktur. Embedding'ler 2D'ye indirgenip renklendirildiğinde kümelerin ne kadar ayrıştığı, noise'un nerede yoğunlaştığı ve hangi kategorilerin birbirine karıştığı anında görülebilir.

Katman 2 — Kapsamlı analiz ve izleme: Arize Phoenix, en güçlü ücretsiz seçenek olarak embedding drift tespiti, otomatik kümeleme, outlier tespiti ve performans metrikleri sunar. Üretim ortamında embedding kalitesinin zaman içinde nasıl değiştiğini izlemek için kullanılabilir.

Katman 3 — Veri kalitesi kontrolü: Renumics Spotlight, yanlış etiketlenmiş örnekleri bulmak, küme sınırlarındaki belirsiz noktaları tespit etmek ve veri setini temizlemek için özellikle değerlidir. MTEB benchmark oluşturma sürecinde annotation kalitesini kontrol etmek için ideal bir araçtır.


7. Önemli Not: Boyut İndirgemenin Sınırları

VectorDB görselleştirme araçlarında her zaman bir boyut indirgeme adımı (UMAP, t-SNE, PCA) bulunur. Bu adım, 768 veya 1024 boyutlu vektörleri 2 veya 3 boyuta indirger. Bu süreçte kaçınılmaz olarak bilgi kaybı yaşanır. Görüntülenen 2D harita, gerçek vektör uzayının bir yaklaşımıdır; tamamı değildir. Bu sınırlama göz önünde bulundurularak yorumlanmalıdır.

Bu alanda henüz Tableau veya Power BI kadar olgun bir "tek araç her şeyi çözer" çözümü bulunmamaktadır. Alan hızla gelişmekte olup, önümüzdeki yıllarda daha entegre çözümlerin ortaya çıkması beklenmektedir.