Ana içeriğe geç

GraphRAG: Grafik Tabanlı Geri Getirmeyle Zenginleştirilmiş Üretime Kılavuz

Bilgi grafiklerinin, geleneksel RAG sistemlerinin sınırlamalarını nasıl çözdüğünü öğrenin.
· 13 dk. oku

Yapay Zeka ile Keşfedin

Geleneksel RAG sistemleri, semantik benzerliğe göre belge parçalarını getirir ve bu, basit sorular için iyi çalışır. Ancak sorgular, birden çok belgeye dağılmış bilgileri sentezlemeyi veya bağlantılı kavramlar üzerinden akıl yürütmeyi gerektirdiğinde, vektör arama yetersiz kalır. Sistem, aralarındaki ilişkiyi anlamadan yalnızca parçalar getirir.

GraphRAG belgeleri izole parçalar olarak ele almaz. varlıkları ve bunların ilişkilerini yakalayan bir bilgi grafiği oluşturur. Bu yapı, sistemin bağlantılar arasında gezinmesine ve birden çok kaynaktan bilgi çekmeyi gerektiren soruları yanıtlamasına olanak tanır. Bu yaklaşım, temel getirme yöntemlerinin sınırlamalarını ele alan birkaç ileri RAG tekniğinden biridir.

GraphRAG Nedir?

GraphRAG, belgeleri vektör gömmeleri yerine bilgi grafikleri olarak temsil eden bir geri getirme ile zenginleştirilmiş üretim tekniğidir. Metni bağımsız olarak aranan parçalara bölmek yerine, GraphRAG varlıkları (insanlar, kuruluşlar, kavramlar, olaylar gibi düşünün) ve bunlar arasındaki ilişkileri çıkarır ve bu bilgileri birbirine bağlı bir grafik yapısında düzenler.

Ardından GraphRAG sistemi, ilgili varlık kümelerini belirlemek için topluluk algılama algoritmalarını uygular ve bu kümeler için hiyerarşik düzeylerde özetler üretir. Bir sorgu geldiğinde, GraphRAG hedefli sorular için belirli varlık mahallelerinde gezinebilir veya tüm külliyatı kapsayan sentez için topluluk özetleri üzerinde map-reduce işlemleri çalıştırabilir.

Şimdi mekaniklere biraz daha yakından bakalım. Bu, grafik tabanlı getirme yönteminin neden ortaya çıktığını ve hangi boşluğu doldurduğunu anlamamıza yardımcı olacak.

Geleneksel RAG'in sınırlamaları

Geleneksel RAG'deki temel sorun getirme veya üretim değil, temsildir. Belgeler parçalara bölünür ve her parça, gömme uzayında yüzen izole bir vektöre dönüşür. Orijinalde var olan yapı — başlıklar, anlatı akışı, hangi paragrafın neye atıfta bulunduğu — düzleştirilip gider.

Bu durum, bilgilerin birleştirilmesini gerektiren sorularda sorun yaratır. "Bu belgelerdeki ana temalar nelerdir?" diye sorduğunuzda, vektör arama "temalar" kelimesini veya ilişkili terimleri içeren parçaları döndürür. Ancak ilgili parçaları bulmak, bir külliyat genelindeki örüntüleri anlamakla aynı şey değildir. Sistem, tek tek parçaları görüp bütünü asla görmediği için bilgiyi ölçekli biçimde bir araya getiremez.

Çok adımlı akıl yürütme de benzer bir duvara çarpar. Diyelim ki bir sorunun yanıtı, A kavramını B'ye, B'yi de C'ye bağlamaya bağlı. Geleneksel RAG, her bir parçayı sorguya benzerliğine göre bağımsız olarak getirir. B, soruya yakın değilse hiç getirilmeyebilir ve zincir kırılır. Sistem uç noktaları bulur ama aradaki yolu kaçırır.

Dikkate alınması gereken bir de getirme-bağlam uyumsuzluğu vardır. Yirmi çok ilgili parçayı getirebilirsiniz, ancak bunların hepsini bir isteme koymak, LLM'in onları iyi kullanacağını garanti etmez. "Lost in the middle" makalesi, LLM'lerin bağlam pencerelerinin başı ve sonundaki bilgilere odaklanma eğiliminde olduğunu, arada gömülü olanları ise sıklıkla gözden kaçırdığını gösteriyor. Daha fazla getirme, otomatik olarak daha iyi yanıtlar demek değildir.

Geleneksel RAG ve GraphRAG karşılaştırması. Görsel: Yazar.

GraphRAG, RAG sınırlamalarını nasıl ele alır

GraphRAG, temsili tamamen değiştirerek bu sınırlamaları aşar. Parçalar yerine, varlıkların düğüm, ilişkilerin ise kenar olduğu bir bilgi grafiği oluşturur. İnsanlar, kuruluşlar, konumlar, kavramlar ve olaylar; kaynak belgelerden birbirleriyle nasıl bağlandıklarıyla birlikte çıkarılır. Bu, parçalamayla kaybolan yapıyı korur.

Grafik hazır olduğunda, sistem ilişkili varlıkları gruplamak için (genellikle Leiden algoritması) topluluk algılama uygular. Bu kümeler birden çok düzeyde oluşur; bazıları sıkı ve özelleşmiş, bazıları ise geniş ve tematik. Gruplamalar, belge sınırlarından veya parça boyutlarından değil, verideki gerçek bağlantılardan gelir.

Varlıkların düğümler olarak gösterildiği bilgi grafiği. Görsel: Yazar.

Küresel sorular için, GraphRAG kullanıcı sorgusu gelmeden önce her topluluk için özetler üretir. Birisi "Ana temalar nelerdir?" diye sorduğunda, sistem eşleşen metin aramaz. Bunun yerine bir map-reduce işlemi yürütür: her topluluk özeti, grafiğin kendi dilimi üzerinden kısmi bir yanıt üretir, ardından tüm kısımlar birleştirilerek nihai yanıt oluşturulur. Bu sayede GraphRAG, binlerce parça getirmeden tüm külliyat üzerinde akıl yürütebilir.

Çok adımlı sorular için benzerlik araması yerine grafik geçişi kullanılır. Sistem, kavramsal zincirleri takip ederek varlıktan varlığa kenarları yürüyebilir; vektör aramanın kaçıracağı bağlantıları izleyebilir. A, B'ye ve B de C'ye bağlıysa, grafik bu yolun var olduğunu bilir ve onu takip edebilir.

GraphRAG'i ne zaman kullanmalı

GraphRAG, sorularınız külliyat genelinde bir anlayış gerektirdiğinde karşılığını verir. Kullanıcılar büyük belge koleksiyonlarında temalar, örüntüler veya özetler hakkında sıkça soru soruyorsa, grafik tabanlı getirme, parçalama yaklaşımlarından daha iyi performans gösterecektir. Şirket organizasyon şemaları, araştırma atıf ağları veya bağlantıları takip etmenin önemli olduğu hukuki dava geçmişleri gibi zengin varlık ilişkilerine sahip alanlarda da aynı durum geçerlidir.

Basit olgusal sorgular ("X'in telefon numarası nedir?") veya küçük belge setleri için geleneksel RAG gayet iyi çalışır ve çalıştırma maliyeti daha düşüktür. GraphRAG, hem indeksleme süresinde hem de LLM çağrılarında ek yük getirir; bu nedenle faydanın yatırımı haklı çıkarması gerekir. Standart RAG ile başlayın ve sınırlamalarına ulaştığınızda GraphRAG'e geçin.

Geleneksel RAG vs. GraphRAG

Aşağıdaki tablo ödünleşimleri özetler. Geleneksel RAG sadelik ve maliyet açısından öne çıkarken, GraphRAG sentez veya bağlantılı akıl yürütme gerektiren sorularda üstünlük sağlar.

Boyut

Geleneksel RAG

GraphRAG

Veri temsili

Vektörler olarak izole metin parçaları

Varlıklar ve ilişkilerle bilgi grafiği

Yapı koruma

Parçalama sırasında kaybolur

Grafik kenarlarıyla korunur

Küresel sorgular

Zayıf (parçalar getirir, sentez yapamaz)

Güçlü (topluluk özetleri üzerinde map-reduce)

Çok adımlı akıl yürütme

Sınırlı (bağımsız parça getirme)

Doğal (grafik geçişi bağlantıları izler)

İndeksleme maliyeti

Düşük (yalnızca gömme)

Yüksek (LLM çıkarımı + gömme + kümelendirme)

Sorgu maliyeti

Düşük

Değişken (yerel ucuz, küresel pahalı)

En uygunu

Olgu aramaları, küçük külliyatlar

Tematik sorular, bağlantılı alanlar

GraphRAG Boru Hattı

Boru hattı iki aşamalıdır: indeksleme grafiği oluşturur, sorgulama onu kullanır.

İndeksleme aşaması

İndeksleme, ham belgeleri beş adımda bir bilgi yapısına dönüştürür:

  • Parçalama, belgeleri işleme için ~300 tokenlık parçalara böler
  • Varlık ve ilişki çıkarımı; insanlar, kavramlar, kuruluşlar ve aralarındaki bağlantıları çıkarır
  • Grafik oluşturma, çıkarımları düğüm ve kenarlara dönüştürür, yinelenenleri birleştirir
  • Topluluk algılama, çoklu hiyerarşi düzeylerinde ilişkili varlıkları kümeler
  • Topluluk özetleme, her küme için metin açıklamalar üretir

En fazla LLM çağrısının yapıldığı yer çıkarım adımıdır. Her parça, modelden varlıkları ve ilişkileri tanımlaması istenen bir istemle işlenir. "OpenAI, GPT-4'ü yayınladı" ifadesini içeren bir parça, her ikisi için varlıklar ve aralarında bağlantı kuran bir ilişki üretir. Aynı geçişte ilişki türü de yakalanır. Her parça bir LLM çağrısı gerektirdiğinden, indeksleme boru hattının pahalı kısmıdır. Sorgu zamanı ise karşılaştırmalı olarak ucuzdur çünkü ağır iş zaten yapılmıştır.

Grafik oluşturma, karmaşıklaşabilen varlık çözümlemeyi ele alır. Farklı parçalarda "OpenAI", "Open AI" ve "şirket" aynı varlığa atıfta bulunabilir. Sistem bu yinelenenleri birleştirerek temiz bir grafik oluşturur.

Topluluk algılama, birden çok düzeyde doğal gruplamalar bulmak için Leiden algoritmasını uygular. Düzey 0, 5-10 ilişkili varlıktan oluşan sıkı kümeler içerebilir. Daha üst düzeyler bunları daha geniş temalara gruplar. Yapay zekâ şirketleri hakkında bir külliyat, tek tek şirketler için düzey-0 topluluklara, "AI laboratuvarları" ve "çip üreticileri" için düzey-1'e ve tüm teknoloji ekosistemini yakalayan düzey-2'ye sahip olabilir. Her topluluk daha sonra o kümenin neyi temsil ettiğini açıklayan bir LLM özeti alır. Bu özetler, herhangi bir kullanıcı sorgusundan önce önceden hesaplanır.

Ortaya çıkan şey bir getirme dizini değil; farklı şekillerde sorgulanmaya hazır, özetlerle birlikte bir grafik olan yapılandırılmış bir temsildir.

Sorgu aşaması

Grafik oluşturulduğunda, sorgular farklı getirme stratejilerine yönlendirilir:

  • Küresel arama, sentez soruları için topluluk özetleri üzerinde map-reduce çalıştırır
  • Yerel arama, belirli aramalar için varlık mahallelerinde gezinir
  • DRIFT arama geniş başlar, sonra umut vadeden bölgelere iner

Getirilen içerik (özetler, varlıklar, ilişkiler, kaynak metin) bir istemde birleştirilir ve LLM nihai yanıtı üretir. Her strateji farklı soru türlerine hizmet eder; bunları aşağıda ayrıntılandıracağız.

Sorgu Türlerini Anlamak

GraphRAG, her biri farklı soru türlerine uygun üç farklı getirme stratejisi sunar. Doğru seçimi yapmak, geniş bir senteze mi, belirli varlık bilgisine mi, yoksa ikisinin ortasına mı ihtiyaç duyduğunuza bağlıdır.

Küresel arama

Küresel arama, tüm bir külliyatı anlamayı gerektiren soruları yanıtlar. "Bu belge koleksiyonundaki ana temalar nelerdir?" veya "Bu raporlar genelinde hangi örüntüler ortaya çıkıyor?" gibi sorular, birkaç eşleşen parçadan değil, her yerden toplanmış bilgiye ihtiyaç duyar.

Mekanizma, topluluk özetleri üzerinde map-reduce'tur. Map aşamasında her topluluk özeti bağımsız olarak işlenir: sistem bir LLM'den ilgili noktaları çıkarmasını ve önem derecesini puanlamasını ister. Reduce aşamasında, tüm topluluklardan en yüksek puanlı noktalar nihai bir istemde toplanır ve LLM bunları tutarlı bir yanıta sentezler.

Map-reduce kullanan GraphRAG küresel arama. Görsel: Yazar

Bu yöntem, topluluk özetleri zaten her varlık kümesinin neyle ilgili olduğunu yakaladığı için çalışır. Sistem binlerce parçayı getirmek zorunda değildir. Bunun yerine, seçtiğiniz hiyerarşi düzeyinde grafiğin yapısını temsil eden önceden hesaplanmış açıklamalar üzerinden akıl yürütür. Daha alt düzeyler (daha küçük, daha sıkı topluluklar) daha ayrıntılı yanıtlar verir ancak daha fazla LLM çağrısına mal olur. Daha üst düzeyler (daha geniş gruplamalar) daha hızlı çalışır ama nüansı kaçırabilir.

Küresel arama, tüm toplulukları işlediğinden diğer modlardan hesaplama olarak daha ağırdır. Sorular gerçekten külliyat genelinde bir anlayış gerektirdiğinde, spesifik olgular değilse kullanın.

Yerel arama

Yerel arama, varlığa özgü soruları ele alır. "Papatyanın iyileştirici özellikleri nelerdir?" veya "Acme Corp Q3 kazançları hakkında ne açıkladı?" gibi sorular belirli varlıkları ve onlarla bağlantılı bilgileri hedefler.

Getirme süreci, grafikte hangi varlıkların sorguyla ilişkili olduğunu belirleyerek başlar. Bu varlıklar geçiş için giriş noktaları olur. Her başlangıç düğümünden sistem, bağlı varlıkları, aralarındaki ilişkileri, ilgili iddia veya olguları ve bu varlıkların ait olduğu topluluk raporlarını çeker. Ayrıca, bu varlıklarla bağlantılı orijinal metin parçalarını da getirir; böylece LLM'e hem yapılandırılmış grafik verileri hem de kaynak metin sağlanır.

İlgili düğümlerle GraphRAG yerel arama. Görsel: Yazar

Tüm bu aday bilgiler, bağlam penceresine sığacak şekilde sıralanır ve filtrelenir. Ardından LLM, getirilen içeriğe dayalı bir yanıt üretir. Yerel arama, tüm grafik yerine yalnızca bir mahalleye odaklandığı için küresel aramadan daha hızlı ve daha ucuzdur.

Belgelerinizde bahsedilen belirli şeyler, kişiler, kuruluşlar veya kavramlar hakkında sorular sorulduğunda yerel aramayı seçin.

DRIFT arama

DRIFT (Esnek Geçiş ile Dinamik Akıl Yürütme ve Çıkarım), küresel ve yerelin arasında yer alır. Hem geniş bağlam hem de belirli detay gerektiren karmaşık sorguları ele alır.

Süreç üç aşamalıdır. İlk olarak, hazırlık aşaması sorguyu semantik olarak en ilgili topluluk özetleriyle karşılaştırır ve takip sorularıyla birlikte başlangıç yanıtı üretir. İkinci olarak, takip aşaması bu soruları alır ve belirli alanlara inmek için yerel aramayı uygular; ara yanıtlar ve daha hedefli takipler üretir. Üçüncü olarak, çıktı aşaması küresel içgörüleri yerel ayrıntılarla dengeleyen sıralı sonuçlar halinde her şeyi birleştirir.

GraphRAG DRIFT arama üç aşamalı süreç. Görsel: Yazar.

DRIFT'i kullanışlı kılan, aramanın başlangıç noktasını genişletmesidir. Topluluk düzeyinde bağlamla başlayarak, saf yerel aramanın getireceğinden daha geniş çeşitlilikte olgu getirir. Ancak yerel geçişle incelterek, tam küresel aramanın maliyetinden kaçınır.

DRIFT'i, hem belirli varlık bilgisine hem de tematik bağlama ihtiyaç duyduğunuz "X şirketinin karşılaştığı zorluklar, daha geniş sektör trendleriyle nasıl karşılaştırılıyor?" gibi sorular için kullanın.

Sorgu türlerini karşılaştırma

Boyut

Küresel

Yerel

DRIFT

En uygunu

Külliyat genelinde temalar ve örüntüler

Belirli varlık soruları

Her ikisini de gerektiren karmaşık sorgular

Mekanizma

Topluluk özetleri üzerinde map-reduce

Varlık mahallesi geçişi

Hazırlık → takip → çıktı aşamaları

Hız

En yavaş (tüm toplulukları işler)

En hızlı (odaklı geçiş)

Orta (geniş başlar, daraltır)

Maliyet

En yüksek

En düşük

Orta

Örnek sorgu

"Ana temalar nelerdir?"

"X Şirketi ne açıkladı?"

"X, sektör trendleriyle nasıl karşılaştırılır?"

GraphRAG ayrıca, grafik geçişinin aşırı olacağı basit sorgular için temel bir vektör araması da sağlar. Ancak çoğu kullanım senaryosu için küresel, yerel ve DRIFT arasında seçim yapmak ihtiyacınızı karşılar.

GraphRAG'in Uygulanması

Bu bölümde, Microsoft'un referans uygulamasını kullanarak bir GraphRAG sistemi oluşturmayı adım adım ele alacağız. Örneklerin çalıştırılabilir ve maliyetlerin makul kalması için girişimler hakkında Paul Graham denemelerinden oluşan küçük bir külliyatla çalışacağız. Bilgi grafikleriyle getirme sistemlerini birleştirmeye yeniyseniz, bilgi grafiği RAG eğitimi temel kavramları kapsar.

Kurulum ve yapılandırma

Bir proje dizini oluşturun ve uv ile başlatın, ardından graphrag paketini kurun. Kütüphane önemli bağımlılıklara sahiptir (PyTorch dahil 237 paket), bu nedenle kurulumun yaklaşık beş dakika süreceğini bekleyin:

mkdir ragtest && cd ragtest
 uv init
 uv add graphrag
 graphrag init --root .

Bu, proje yapısını oluşturur:

ragtest/
 ├── .env                	# API anahtarı yapılandırması
 ├── settings.yaml       	# Boru hattı ayarları
 ├── prompts/            	# LLM istem şablonları
 │   ├── extract_graph.txt
 │   ├── summarize_descriptions.txt
 │   └── ...
 └── input/              	# Kaynak belgeleriniz buraya gelir

prompts/ dizini, GraphRAG'in varlık çıkarımı ve özetleme için kullandığı şablonları içerir. Bunları alana özgü ihtiyaçlar için özelleştirebilirsiniz; varsayılanlar genel metin için iyi çalışır.

Belgelerinizi hazırlama

Metin dosyalarını input/ dizinine ekleyin. Bu eğitimde, girişimler hakkında üç Paul Graham denemesini kullanacağız. Web sitesi, içeriği <font> etiketlerine saran minimal HTML kullanıyor; bu nedenle basit bir ayrıştırıcı metni temiz şekilde çıkarır:

import urllib.request
 from html.parser import HTMLParser

 class TextExtractor(HTMLParser):
 	def __init__(self):
     	super().__init__()
     	self.text = []
     	self.in_font = False

 	def handle_starttag(self, tag, attrs):
     	if tag == 'font':
         	self.in_font = True

 	def handle_endtag(self, tag):
     	if tag == 'font':
         	self.in_font = False

 	def handle_data(self, data):
     	if self.in_font:
         	self.text.append(data)

 essays = {
 	"startupideas": "http://paulgraham.com/startupideas.html",
     "do_things_that_dont_scale": "http://paulgraham.com/ds.html",
 	"startup_growth": "http://paulgraham.com/growth.html"
 }

 for name, url in essays.items():
 	with urllib.request.urlopen(url) as response:
     	html = response.read().decode('utf-8')
 	parser = TextExtractor()
 	parser.feed(html)
 	text = ' '.join(parser.text)
 	with open(f"input/{name}.txt", "w") as f:
     	f.write(text)
 	print(f"Saved {name}.txt ({len(text.split())} words)")
Saved startupideas.txt (3000 words)
 Saved do_things_that_dont_scale.txt (3000 words)
 Saved startup_growth.txt (3000 words)

Üç tematik olarak bağlantılı deneme genelinde yaklaşık 9.000 kelime; anlamlı varlık ilişkilerini görmeye yetecek kadar, büyük API maliyetleri oluşturmadan.

Boru hattını yapılandırma

.env dosyasını düzenleyerek OpenAI API anahtarınızı ekleyin:

GRAPHRAG_API_KEY=your-openai-api-key-here

Varsayılan settings.yaml kutudan çıktığı gibi çalışır, ancak modeli ayarlamak isteyebilirsiniz. Dosya varsayılan olarak maliyet ve kaliteyi dengeleyen gpt-4o-mini modelini kullanır. Tüm mevcut seçenekler için tam yapılandırma referansına bakın:

models:
   default_chat_model:
 	type: openai_chat
 	auth_type: api_key
 	api_key: ${GRAPHRAG_API_KEY}
 	model: gpt-4o-mini
 	model_supports_json: true
 	concurrent_requests: 25

   default_embedding_model:
 	type: openai_embedding
 	auth_type: api_key
 	api_key: ${GRAPHRAG_API_KEY}
 	model: text-embedding-3-small

Yapılandırmadaki diğer dikkat çeken ayarlar:

chunks:
   size: 1200  	# Parça başına token
   overlap: 100	# Parçalar arasındaki örtüşme

 extract_graph:
   entity_types: [organization, person, geo, event]
   max_gleanings: 1	# Ek çıkarım geçişleri

 cluster_graph:
   max_cluster_size: 10

İndeksleme boru hattını çalıştırma

Bilgi grafiğini şu komutla oluşturun:

graphrag index --root .

Boru hattı, belgeleri varlık çıkarımı, grafik oluşturma ve topluluk algılama aşamalarından geçirir:

├── Loading Input (InputFileType.text) - 3 files loaded (0 filtered) ───
 ├── create_base_text_units
 ├── create_final_documents
 ├── extract_graph
 ├── finalize_graph
 ├── create_final_entities
 ├── create_final_relationships
 ├── create_final_text_units
 ├── create_base_entity_graph
 ├── create_communities
 ├── create_final_communities
 ├── create_community_reports
 ├── generate_text_embeddings
 ⠋ GraphRAG Indexer
 ├── All workflows completed successfully

Her adım bir öncekine dayanır. extract_graph aşaması LLM çağrılarının çoğunu yaparken, create_communities aşaması, ilişkili varlıkları kümeler hâline getirmek için Leiden algoritmasını uygular.

Üç denememizle indeksleme yaklaşık iki dakikada tamamlanır. Sonuçları parquet dosyalarını yükleyerek veya satır sayılarını kontrol ederek inceleyebilirsiniz:

  • 3 belgeden 12 metin parçası
  • 74 varlık (kişiler, kuruluşlar, kavramlar)
  • Varlıklar arasında 89 ilişki
  • Çeşitli hiyerarşi düzeylerinde 12 topluluk

Çıktı, parquet dosyaları olarak output/ dizininde yer alır:

output/
 ├── documents.parquet
 ├── entities.parquet
 ├── relationships.parquet
 ├── text_units.parquet
 ├── communities.parquet
 ├── community_reports.parquet
 └── lancedb/      	# Vektör gömmeleri

Parquet formatı her şeyi taşınabilir kılar. Bu dosyaları pandas ile yükleyerek varlıkları inceleyebilir, ilişkileri gözden geçirebilir veya çıkarım sorunlarını ayıklayabilirsiniz. Tüm proje dizini sürüm kontrolüne uygun olacak kadar küçüktür (bu külliyat için 10 MB'ın altında); yalnızca API anahtarınızı içeren .env dosyasını hariç tutun.

CLI ile sorgulama

GraphRAG üç sorgu modu sağlar. Her birini deneyelim.

Küresel arama için tematik sorular:

graphrag query \
 	--root . \
 	--method global \
 	--query "What are the main themes and lessons about startups in these essays?"
SUCCESS: Global Search Response:

 The essays present several interconnected themes about startups:

 **Growth as the defining characteristic**: A startup isn't just a new company—it's
 specifically designed for rapid growth. This growth orientation shapes everything
 from idea selection to daily decision-making. The essays suggest using weekly
 growth rate as a compass for all strategic choices.

 **The power of doing unscalable things**: Counterintuitively, successful startups
 often begin with manual, labor-intensive approaches. Stripe's founders would
 physically set up new users on the spot. Airbnb's founders went door-to-door
 recruiting hosts. These unscalable tactics bootstrap the initial user base.

 **Ideas emerge from problems, not brainstorming**: The best startup ideas come
 from founders solving their own problems or noticing gaps while "living in the
 future." Deliberately trying to generate ideas tends to produce plausible-sounding
 but ultimately weak concepts.

 **User relationships matter early**: Early users provide irreplaceable feedback.
 Founders should go beyond standard customer service to create exceptional
 experiences, gathering insights that shape the product.

Yanıt, üç denemenin tamamındaki temaları sentezler; bu, geleneksel RAG ile birçok parçanın getirilmesini ve işlenmesini gerektirirdi. Küresel arama bunun yerine topluluk özetlerinden yararlanarak tutarlı, üst düzey bir görünüm sundu.

Varlığa özgü sorular için yerel arama:

graphrag query \
 	--root . \
 	--method local \
 	--query "What role does Y Combinator play according to these essays?"
SUCCESS: Local Search Response:

 Y Combinator functions as both an accelerator and a testing ground for startup
 principles. According to the essays, YC provides:

 **Funding and validation**: YC offers initial funding that lets founders focus
 on building rather than fundraising. The program validates ideas through its
 selection process.

 **Growth measurement framework**: YC tracks startups by weekly growth rate,
 with 5-7% weekly growth considered good and 10% exceptional. This metric-driven
 approach forces founders to confront whether they're making real progress.

 **Network effects**: B2B startups at YC gain immediate access to hundreds of
 potential customers—other YC companies. Stripe leveraged this extensively in
 its early days.

 **Demo Day as forcing function**: The program's structure, culminating in Demo
 Day presentations to investors, creates urgency that pushes founders to ship
 and iterate quickly.

Yerel arama, Y Combinator varlığından başlayarak grafikte gezindi; büyüme metrikleri, Stripe ve Demo Day gibi bağlantılı kavramları içeri çekti. Yanıt, genel bilgiden ziyade denemelerin YC hakkında gerçekten söylediklerine dayanıyor.

Hem genişlik hem özgüllük gerektiren sorular için DRIFT arama:

graphrag query \
 	--root . \
 	--method drift \
 	--query "How do the essays describe the relationship between startup ideas and user problems?"
SUCCESS: Drift Search Response:

 The essays establish a direct link between viable startup ideas and genuine user
 problems through several mechanisms:

 **Organic discovery over invention**: Rather than brainstorming ideas, founders
 should notice problems they personally experience. Microsoft, Apple, Google, and
 Facebook all started this way—founders building something they themselves needed.

 **The "well" vs "shallow hole" distinction**: Good ideas serve a small number of
 users who desperately need the solution (a narrow, deep well) rather than many
 users with mild interest (a broad, shallow hole). Depth of need matters more
 than breadth of appeal initially.

 **Feedback loops as validation**: Engaging directly with early users reveals
 whether the problem is real and the solution fits. This feedback shapes the
 product more than any amount of planning.

 **Problem-first, solution-second**: The essays warn against "sitcom startup
 ideas"—concepts that sound plausible but don't address real pain points. A
 social network for pet owners sounds reasonable but lacks urgent demand.

DRIFT, girişimcilik felsefesine dair topluluk düzeyi bağlamla geniş başladı; ardından kuyu benzetmesi ve sitcom fikirleri gibi belirli örneklere indi. Sonuç, tematik içgörüyü kaynak metinden somut ayrıntılarla harmanlıyor.

Python ile programatik erişim

Üretim sistemleri için doğrudan Python API'sini kullanın. Süreç üç bölümden oluşur: yapılandırmayı yüklemek, indekslenmiş verileri yüklemek ve sorguları çalıştırmak.

Önce, ortam değişkenlerini yükleyip ayar dosyasını ayrıştırarak yapılandırmayı kurun:

import os
 import yaml
 from pathlib import Path
 from dotenv import load_dotenv
 from graphrag.config.create_graphrag_config import create_graphrag_config

 ROOT_DIR = Path(".")

 # Load environment variables and config
 load_dotenv(ROOT_DIR / ".env")
 with open(ROOT_DIR / "settings.yaml") as f:
 	yaml_content = f.read()
 yaml_content = os.path.expandvars(yaml_content)  # Expand ${VAR} references
 settings = yaml.safe_load(yaml_content)
 config = create_graphrag_config(values=settings, root_dir=str(ROOT_DIR))

Ardından, tüm indekslenmiş verileri parquet dosyalarından yükleyin. GraphRAG varlıkları, ilişkileri, toplulukları ve metin parçalarını ayrı ayrı depolar:

import pandas as pd

 output_dir = ROOT_DIR / "output"
 entities = pd.read_parquet(output_dir / "entities.parquet")
 communities = pd.read_parquet(output_dir / "communities.parquet")
 community_reports = pd.read_parquet(output_dir / "community_reports.parquet")
 text_units = pd.read_parquet(output_dir / "text_units.parquet")
 relationships = pd.read_parquet(output_dir / "relationships.parquet")

 print(f"Loaded {len(entities)} entities, {len(relationships)} relationships")
Loaded 74 entities, 89 relationships

Son olarak, async API'yi kullanarak sorguları çalıştırın. local_search işlevi tüm veri çerçevelerini ve sorgu parametrelerini alır:

import asyncio
 from graphrag.api import local_search

 async def run_query(query: str):
 	response, context = await local_search(
     	config=config,
     	entities=entities,
     	communities=communities,
         community_reports=community_reports,
     	text_units=text_units,
     	relationships=relationships,
     	covariates=None,
     	community_level=2,
     	response_type="Multiple Paragraphs",
     	query=query,
 	)
 	return response

 query = "What advice do the essays give about finding startup ideas?"
 response = asyncio.run(run_query(query))
 print(response)
The essays provide several valuable insights into finding startup ideas:

 Focus on Growth: A startup is designed to grow quickly. Founders should commit
 to seeking ideas that can scale significantly, as this distinguishes startups
 from ordinary businesses.

 Identify Unmet Needs: Successful startups arise from recognizing problems that
 need solving. Founders who can see different problems, particularly those
 addressable through technology, are more likely to develop effective solutions.

 Leverage Personal Insights: Many successful startups originate from the unique
 insights of their founders, often stemming from personal experiences or
 frustrations. This personal connection leads to more authentic solutions.

 Explore Overlooked Markets: Founders should think outside the box and explore
 markets that may be overlooked. Successful startups often emerge from ideas
 that seem obvious to the founders but aren't yet recognized broadly.

Python API, hangi verilerin yükleneceği, hangi topluluk düzeyinin sorgulanacağı ve yanıtların nasıl biçimlendirileceği üzerinde tam kontrol sağlar. Özel getirme mantığı gerektiren veya mevcut sistemlerle entegrasyon isteyen uygulamalar için izlenecek yol budur.

Sonuç

Geleneksel RAG, çalıştığı yere kadar iyidir. Kullanıcılar temalar veya örüntüler hakkında sorular sorduğunda ve tutarlı bir yanıt yerine gevşekçe ilişkili parçaların bir karmasını aldığında duvara çarptığınızı anlarsınız. GraphRAG, önceden hesaplanmış topluluk özetleriyle bir bilgi grafiği kullanarak parça temsili yerine bunu koyarak bu sorunu çözer.

Ancak maliyeti gerçektir. İndeksleme LLM çağrılarını tüketir ve küresel arama da ucuz değildir. Küçük bir belge koleksiyonu veya basit aramalar için vektör aramada kalın.

Ama külliyatınızda varlıklar arasında zengin bağlantılar varsa ve kullanıcılarınız bu bağlantılarla ilgileniyorsa GraphRAG karşılığını verir. Sorduğunuza göre sorgu türünü seçin: temalar için küresel, belirli varlıklar için yerel, her ikisine de ihtiyaç duyduğunuzda DRIFT. Uygulama, bir kez çalıştırdıktan sonra karmaşık değildir ve parquet çıktısı her şeyi incelemeyi ve hata ayıklamayı kolaylaştırır.

Bexruz (Bex) Tuychiev

Yazar

Bexruz (Bex) Tuychiev

2 yılı aşkın deneyime sahip bir veri bilimi içerik üreticisiyim ve Medium’da en büyük takipçi kitlelerinden birine sahibim. Yapay zekâ ve makine öğrenimi üzerine, biraz da alaycı bir üslupla yazılmış, ayrıntılı makaleler kaleme almayı seviyorum; çünkü onları biraz daha az sıkıcı hale getirmek için bir şeyler yapmak gerekiyor. 130’un üzerinde makale ve bir de DataCamp kursu ürettim; bir diğeri de hazırlık aşamasında. İçeriklerim 5 milyondan fazla kişi tarafından görüldü; bunların 20 bini Medium ve LinkedIn’de takipçim oldu. 

GraphRAG SSS

GraphRAG ile geleneksel RAG arasındaki fark nedir?

Geleneksel RAG, belgeleri izole parçalara böler ve vektör benzerliğine göre getirir. GraphRAG ise varlıklar ve ilişkilerle bir bilgi grafiği oluşturur, ardından ilgili varlıkları önceden hesaplanmış özetlere sahip topluluklar hâlinde kümeler. Bu sayede yalnızca eşleşen parçaları döndürmek yerine tüm külliyat genelinde bilgiyi sentezleyebilir.

GraphRAG'i geleneksel RAG yerine ne zaman kullanmalıyım?

Kullanıcılar "Bu belgelerdeki başlıca örüntüler nelerdir?" gibi tematik sorular sorduğunda veya yanıtların birden çok kaynaktan bilgi bağlamayı gerektirdiği durumlarda GraphRAG'i kullanın. Basit olgusal aramalar veya küçük belge setleri için geleneksel RAG daha ucuzdur ve gayet iyi çalışır.

GraphRAG'deki üç sorgu türü nedir?

Küresel arama, külliyat genelindeki sorular için topluluk özetleri üzerinde map-reduce çalıştırır. Yerel arama, belirli aramalar için varlık mahallelerinde gezinir. DRIFT arama, topluluk düzeyi bağlamla başlayıp belirli varlıklara inerek her iki yaklaşımı birleştirir.

GraphRAG'in maliyeti, geleneksel RAG'e kıyasla ne kadar?

GraphRAG daha maliyetlidir ve bunun başlıca nedeni indeksleme aşamasıdır. Her metin parçası için varlık çıkarımı adına bir LLM çağrısı gerekir ve topluluk özetlerinin de üretilmesi gerekir. Sorgu maliyetleri değişir: yerel arama ucuzdur, küresel arama tüm toplulukları işlediğinden maliyet külliyat boyutuyla ölçeklenir.

OpenAI dışındaki LLM'lerle GraphRAG kullanabilir miyim?

Evet. Microsoft'un GraphRAG kütüphanesi, Azure OpenAI'ı hazır biçimde destekler ve yapılandırma özel API uç noktalarını kabul eder. Ollama veya vLLM gibi araçlar üzerinden sunulan yerel modeller dâhil, OpenAI uyumlu herhangi bir API'yi işaret edebilirsiniz; ancak çıkarım kalitesi, modelin yönerge takibi yeteneğine bağlıdır.

Konular

İlgili