स्व-होस्टिंग कोग्नी: एलएलएम प्रदर्शन परीक्षण
स्थानीय एलएलएम के साथ कोग्नी का परीक्षण - वास्तविक परिणाम
Cognee एक Python फ्रेमवर्क है जो दस्तावेज़ों से ज्ञान ग्राफ़ बनाने के लिए LLMs का उपयोग करता है। लेकिन क्या यह स्व-होस्टेड मॉडल्स के साथ काम करता है?
मैंने कई स्थानीय LLMs के साथ इसका परीक्षण किया है।

यह एक प्राइसलिस्ट PDF पृष्ठ है जिसे मैंने प्रोसेस करने की कोशिश की है।
TL;DR
Cognee संभवतः सौखों बिलियन पैरामीटर्स वाले स्मार्ट LLMs के साथ अच्छी तरह काम करता है, लेकिन स्व-होस्टेड RAG सेटअप्स के लिए जो PDFs (जैसे प्राइसलिस्ट) से स्वचालित रूप से डेटा निकालने की उम्मीद करते हैं, मेरे हार्डवेयर पर यह असफल रहा। फ्रेमवर्क का संरचित आउटपुट पर भारी निर्भरता छोटे स्थानीय मॉडल्स के लिए विश्वसनीय प्रदर्शन करने में चुनौतीपूर्ण बनाता है।
Cognee क्या है?
Cognee एक ओपन-सोर्स Python फ्रेमवर्क है जो LLMs का उपयोग करके असंरचित दस्तावेज़ों से ज्ञान ग्राफ़ बनाने के लिए डिज़ाइन किया गया है। पारंपरिक RAG सिस्टम्स के विपरीत जो दस्तावेज़ों को केवल चंक और एम्बेड करते हैं, Cognee एंटिटीज़, रिलेशनशिप्स, और कॉन्सेप्ट्स को एक ग्राफ डेटाबेस में निकालने का प्रयास करता है। यह दृष्टिकोण GraphRAG जैसे उन्नत RAG आर्किटेक्चर्स के साथ मेल खाता है, जो बेहतर संदर्भ पुनर्प्राप्ति का वादा करता है।
फ्रेमवर्क कई बैकएंड्स का समर्थन करता है:
- वेक्टर डेटाबेस: लैंसडीबी (डिफ़ॉल्ट), अन्य वेक्टर स्टोर्स के लिए समर्थन
- ग्राफ डेटाबेस: कज़ू (डिफ़ॉल्ट), जटिल रिलेशनशिप क्वेरी के लिए
- LLM प्रोवाइडर्स: ओपनएआई, एंथ्रोपिक, ओल्लामा, और अन्य
- संरचित आउटपुट फ्रेमवर्क्स: BAML और इंस्ट्रक्टर के लिए कंस्ट्रेन्ड जनरेशन
स्व-होस्टिंग उत्साही लोगों के लिए, Cognee का ओल्लामा के साथ संगतता स्थानीय डिप्लॉयमेंट्स के लिए आकर्षक बनाता है। हालांकि, विवरण में शैतान छिपा होता है - जैसा कि हम देखेंगे, संरचित आउटपुट की आवश्यकताएं छोटे मॉडल्स के लिए महत्वपूर्ण चुनौतियां पैदा करती हैं।
संरचित आउटपुट क्यों महत्वपूर्ण है
Cognee दस्तावेज़ों से जानकारी निकालने के लिए भारी रूप से संरचित आउटपुट पर निर्भर करता है। दस्तावेज़ को प्रोसेस करते समय, LLM को उचित रूप से फ़ॉर्मेटेड JSON लौटाना चाहिए जिसमें एंटिटीज़, रिलेशनशिप्स, और मेटाडेटा शामिल हों। यह वही स्थान है जहां कई छोटे मॉडल्स संघर्ष करते हैं।
अगर आप अपने प्रोजेक्ट्स में संरचित आउटपुट का उपयोग कर रहे हैं, तो इन प्रतिबंधों को समझना महत्वपूर्ण है। Cognee के साथ मैंने सामना किए गए चुनौतियां स्थानीय मॉडल्स के साथ काम करते समय LLM इकोसिस्टम में व्यापक मुद्दों को दर्शाती हैं।
कॉन्फ़िगरेशन सेटअप
यहाँ Cognee के साथ ओल्लामा के लिए मेरा काम करने वाला कॉन्फ़िगरेशन है। नोट करें कि स्थानीय ऑपरेशन को सक्षम करने वाले मुख्य सेटिंग्स:
TELEMETRY_DISABLED=1
# STRUCTURED_OUTPUT_FRAMEWORK="instructor"
STRUCTURED_OUTPUT_FRAMEWORK="BAML"
# LLM Configuration
LLM_API_KEY="ollama"
LLM_MODEL="gpt-oss:20b"
LLM_PROVIDER="ollama"
LLM_ENDPOINT="http://localhost:11434/v1"
# LLM_MAX_TOKENS="25000"
# Embedding Configuration
EMBEDDING_PROVIDER="ollama"
EMBEDDING_MODEL="avr/sfr-embedding-mistral:latest"
EMBEDDING_ENDPOINT="http://localhost:11434/api/embeddings"
EMBEDDING_DIMENSIONS=4096
HUGGINGFACE_TOKENIZER="Salesforce/SFR-Embedding-Mistral"
# BAML Configuration
BAML_LLM_PROVIDER="ollama"
BAML_LLM_MODEL="gpt-oss:20b"
BAML_LLM_ENDPOINT="http://localhost:11434/v1"
# Database Settings (defaults)
DB_PROVIDER="sqlite"
VECTOR_DB_PROVIDER="lancedb"
GRAPH_DATABASE_PROVIDER="kuzu"
# Auth
REQUIRE_AUTHENTICATION=False
ENABLE_BACKEND_ACCESS_CONTROL=False
मुख्य कॉन्फ़िगरेशन चॉइसेज
संरचित आउटपुट फ्रेमवर्क: मैंने BAML का परीक्षण किया, जो बेसिक प्रॉम्प्टिंग के मुकाबले आउटपुट स्कीमाओं पर बेहतर नियंत्रण प्रदान करता है। BAML को विशेष रूप से संरचित LLM आउटपुट्स के लिए डिज़ाइन किया गया है, जिससे ज्ञान ग्राफ़ निकालने के कार्य के लिए यह एक प्राकृतिक फिट बन जाता है।
LLM प्रोवाइडर: ओल्लामा के ओपनएआई-संगत API एंडपॉइंट (/v1) का उपयोग करने से Cognee इसे किसी भी अन्य ओपनएआई-स्टाइल सेवा की तरह ट्रीट कर सकता है।
एम्बेडिंग मॉडल: SFR-Embedding-Mistral मॉडल (4096 डाइमेंशन्स) उच्च गुणवत्ता वाले एम्बेडिंग्स प्रदान करता है। एम्बेडिंग मॉडल चयन और प्रदर्शन के बारे में अधिक जानकारी के लिए, Qwen3 एम्बेडिंग मॉडल्स उत्कृष्ट विकल्प प्रदान करते हैं जिनके पास मजबूत बहुभाषी क्षमताएं हैं।
डेटाबेस: मेटाडेटा के लिए SQLite, वेक्टर के लिए LanceDB, और ज्ञान ग्राफ़ के लिए Kuzu सब कुछ स्थानीय रखते हैं बिना किसी बाहरी निर्भरताओं के।
Cognee इंस्टॉल करें
इंस्टॉलेशन uv (या pip) का उपयोग करके सरल है। मैं तेज़ डिपेंडेंसी रिज़ॉल्यूशन के लिए uv का उपयोग करने की सलाह देता हूँ:
uv venv && source .venv/bin/activate
uv pip install cognee[ollama]
uv pip install cognee[baml]
uv pip install cognee[instructor]
uv sync --extra scraping
uv run playwright install
sudo apt-get install libavif16
[ollama]、[baml] और [instructor] एक्स्ट्रास स्थानीय LLM ऑपरेशन और संरचित आउटपुट के लिए आवश्यक डिपेंडेंसीज़ इंस्टॉल करते हैं। स्क्रैपिंग एक्स्ट्रा वेब स्क्रैपिंग क्षमताएं जोड़ता है, जबकि Playwright JavaScript-रेंडर्ड पेज प्रोसेसिंग सक्षम बनाता है।
उदाहरण कोड और उपयोग
यहाँ Cognee के साथ दस्तावेज़ों को प्रोसेस करने के लिए बेसिक वर्कफ़्लो है। पहले, हम दस्तावेज़ जोड़ते हैं और ज्ञान ग्राफ़ बनाते हैं:
msy-add.py:
import cognee
import asyncio
async def main():
# Create a clean slate for cognee -- reset data and system state
await cognee.prune.prune_data()
await cognee.prune.prune_system(metadata=True)
# Add sample content
await cognee.add(
"/home/rg/prj/prices/msy_parts_price_20251224.pdf",
node_set=["price_list", "computer_parts", "2025-12-24", "aud"]
)
# Process with LLMs to build the knowledge graph
await cognee.cognify()
if __name__ == '__main__':
asyncio.run(main())
node_set पैरामीटर सेमांटिक टैग्स प्रदान करते हैं जो दस्तावेज़ को ज्ञान ग्राफ़ में वर्गीकृत करने में मदद करते हैं। cognify() मेथड वही स्थान है जहां मजिक (या समस्याएं) होती हैं - यह दस्तावेज़ चंक्स को LLM के लिए एंटिटी और रिलेशनशिप निकालने के लिए भेजता है।
msy-search.py:
import cognee
import asyncio
async def main():
# Search the knowledge graph
results = await cognee.search(
query_text="What products are in the price list?"
# query_text="What is the average price for 32GB RAM (2x16GB modules)?"
)
# Print
for result in results:
print(result)
if __name__ == '__main__':
asyncio.run(main())
पारंपरिक वेक्टर सर्च के विपरीत RAG सिस्टम्स में, Cognee ज्ञान ग्राफ़ को क्वेरी करता है, जो थ्योरेटिकली अधिक जटिल रिलेशनशिप-आधारित रिट्रीवल सक्षम बनाता है। यह उन्नत RAG आर्किटेक्चर्स के समान है, लेकिन यह प्रारंभिक ग्राफ़ निर्माण को सफल होने की आवश्यकता है।
परीक्षण परिणाम: LLMs प्रदर्शन
मैंने एक रियल-वर्ल्ड यूज़ केस के साथ Cognee का परीक्षण किया: एक कंप्यूटर पार्ट्स प्राइस लिस्ट PDF से उत्पाद जानकारी निकालना। यह एक आदर्श स्थिति लग रही थी - टेबुलर फ़ॉर्मेट में संरचित डेटा। यहाँ हर मॉडल के साथ हुआ:
परीक्षण किए गए मॉडल्स
1. gpt-oss:20b (20 बिलियन पैरामीटर्स)
- परिणाम: कैरेक्टर एन्कोडिंग त्रुटियों के साथ असफल
- मुद्दा: गलत कैरेक्टर कोड्स के साथ बिगड़े हुए संरचित आउटपुट लौटाया
- नोट: ओपन-सोर्स संगतता के लिए विशेष रूप से डिज़ाइन किया गया होने के बावजूद, यह निरंतर JSON फ़ॉर्मेटिंग बनाए रखने में असमर्थ रहा
2. qwen3:14b (14 बिलियन पैरामीटर्स)
- परिणाम: संरचित आउटपुट उत्पन्न करने में असफल
- मुद्दा: मॉडल टेक्स्ट उत्पन्न करता था लेकिन आवश्यक JSON स्कीमा में नहीं
- नोट: Qwen मॉडल्स आमतौर पर अच्छी तरह प्रदर्शन करते हैं, लेकिन इस कार्य को उनके संरचित आउटपुट क्षमताओं से परे पाया गया
3. deepseek-r1:14b (14 बिलियन पैरामीटर्स)
- परिणाम: संरचित आउटपुट उत्पन्न करने में असफल
- मुद्दा: qwen3 के समान, BAML स्कीमा आवश्यकताओं का पालन नहीं कर सका
- नोट: रीज़निंग क्षमताएं फ़ॉर्मेट अनुपालन में मदद नहीं कीं
4. devstral:24b (24 बिलियन पैरामीटर्स)
- परिणाम: संरचित आउटपुट उत्पन्न करने में असफल
- मुद्दा: अधिक पैरामीटर्स होने के बावजूद, निरंतर वैलिड JSON उत्पन्न नहीं कर सका
- नोट: कोडिंग के लिए विशेषीकृत मॉडल भी कड़ी स्कीमा अनुपालन से संघर्ष करता रहा
5. ministral-3:14b (14 बिलियन पैरामीटर्स)
- परिणाम: संरचित आउटपुट उत्पन्न करने में असफल
- मुद्दा: Mistral का छोटा मॉडल संरचित आउटपुट की मांगों को संभालने में असमर्थ रहा
6. qwen3-vl:30b-a3b-instruct (30 बिलियन पैरामीटर्स)
- परिणाम: संरचित आउटपुट उत्पन्न करने में असफल
- मुद्दा: विज़न क्षमताएं इस संदर्भ में PDF टेबल निकालने में मदद नहीं कीं
7. gpt-oss:120b (120 बिलियन पैरामीटर्स)
- परिणाम: 2+ घंटे के बाद प्रोसेसिंग पूरा नहीं हुआ
- हार्डवेयर: कंज्यूमर GPU सेटअप
- मुद्दा: मॉडल बहुत बड़ा था प्रैक्टिकल स्व-होस्टेड यूज़ के लिए, भले ही यह अंततः काम कर सकता था
मुख्य निष्कर्ष
चंक साइज़ सीमा: Cognee Ollama के साथ दस्तावेज़ों को प्रोसेस करते समय 4k टोकन चंक्स का उपयोग करता है। जटिल दस्तावेज़ों या बड़े कॉन्टेक्स्ट विंडो वाले मॉडल्स के लिए यह अनावश्यक रूप से सीमित लग रहा है। फ्रेमवर्क इस पैरामीटर को समायोजित करने के लिए आसान तरीका प्रदान नहीं करता।
संरचित आउटपुट आवश्यकताएं: मुख्य मुद्दा मॉडल बुद्धिमत्ता नहीं है बल्कि फ़ॉर्मेट अनुपालन। ये मॉडल सामग्री को समझ सकते हैं, लेकिन निकालने के प्रक्रिया के दौरान निरंतर JSON स्कीमा बनाए रखना चुनौतीपूर्ण साबित होता है। यह स्थानीय मॉडल्स को आउटपुट प्रतिबंधों का पालन करने में व्यापक चुनौतियों के साथ मेल खाता है।
हार्डवेयर विचार: जब एक पर्याप्त बड़ा मॉडल (जैसे gpt-oss:120b) काम कर सकता है, तो हार्डवेयर आवश्यकताएं इसे अधिकांश स्व-होस्टिंग सीनारियों के लिए अप्रैक्टिकल बनाती हैं। आपको महत्वपूर्ण GPU मेमोरी और प्रोसेसिंग पावर की आवश्यकता होगी।
संरचित आउटपुट सर्वोत्तम प्रथाओं के साथ तुलना
यह अनुभव विभिन्न LLM प्रोवाइडर्स के साथ संरचित आउटपुट के साथ काम करते समय सीखे गए पाठों को मजबूत करता है। OpenAI, Anthropic, और Google के वाणिज्यिक APIs में अक्सर आउटपुट स्कीमाओं को लागू करने के लिए बिल्ट-इन मेकेनिज्म होते हैं, जबकि स्थानीय मॉडल्स के लिए ग्रामर-आधारित सैम्पलिंग या कई वैलिडेशन पास जैसे अधिक जटिल दृष्टिकोण की आवश्यकता होती है।
Cognee के लिए सही LLM का चयन करने के बारे में के लिए, विभिन्न मॉडल साइज़ों और उनके प्रदर्शन विशेषताओं के विस्तृत तुलनाओं के साथ व्यापक गाइड्स उपलब्ध हैं जो आपको सूचित निर्णय लेने में मदद कर सकते हैं।
स्व-होस्टेड RAG के लिए वैकल्पिक दृष्टिकोण
अगर आप स्व-होस्टिंग पर दृढ़ हैं और दस्तावेज़ों से संरचित डेटा निकालना चाहते हैं, तो इन वैकल्पिक दृष्टिकोणों पर विचार करें:
1. सरल निकासी के साथ पारंपरिक RAG
आरंभ में जटिल ज्ञान ग्राफ़ बनाने के बजाय, दस्तावेज़ चंकिंग और वेक्टर सर्च के साथ पारंपरिक RAG का उपयोग करें। संरचित डेटा निकासी के लिए:
pdfplumberयाtabula-pyजैसे लाइब्रेरी का उपयोग करके तालिकाओं को सीधे पार्स करें- उन प्रॉम्प्ट्स का उपयोग करें जो कठोर स्कीमा अनुपालन की आवश्यकता नहीं होती
- LLM आउटपुट फॉर्मेट पर निर्भर करने के बजाय Python में पोस्ट-प्रोसेसिंग वैलिडेशन लागू करें
2. विशेषीकृत एम्बेडिंग मॉडल
आपके एम्बेडिंग्स की गुणवत्ता रिट्रीवल प्रदर्शन को महत्वपूर्ण रूप से प्रभावित करती है। अपने स्थानीय सिस्टम के लिए उच्च प्रदर्शन करने वाले एम्बेडिंग मॉडल का उपयोग करने पर विचार करें। आधुनिक एम्बेडिंग मॉडल जैसे Qwen3 के ऑफरिंग्स उत्कृष्ट बहुभाषी समर्थन प्रदान करते हैं और आपकी RAG सिस्टम की सटीकता को महत्वपूर्ण रूप से सुधार सकते हैं।
3. बेहतर परिणामों के लिए रीरैंकिंग
अपेक्षाकृत सरल RAG आर्किटेक्चर के साथ भी, एक रीरैंकिंग स्टेप जोड़ने से परिणामों में महत्वपूर्ण सुधार हो सकता है। प्रारंभिक वेक्टर सर्च रिट्रीवल के बाद, एक रीरैंकर मॉडल प्रासंगिकता का बेहतर आकलन कर सकता है। यह दो-चरण की विधि अक्सर अधिक जटिल एकल-चरण सिस्टम से बेहतर प्रदर्शन करती है, विशेष रूप से जब सीमित हार्डवेयर के साथ काम किया जाता है।
4. हाइब्रिड सर्च रणनीतियाँ
वेक्टर सर्च को पारंपरिक कीवर्ड सर्च (BM25) के साथ मिलाने से अक्सर दोनों के अकेले बेहतर परिणाम मिलते हैं। कई आधुनिक वेक्टर डेटाबेस में हाइब्रिड सर्च का समर्थन नेटिव रूप से होता है।
5. वेक्टर स्टोर वैकल्पिक विकल्पों का विचार करें
अगर आप एक RAG सिस्टम से स्क्रैच बनाना चाहते हैं, तो अपने आवश्यकताओं के आधार पर विभिन्न वेक्टर स्टोर का मूल्यांकन करें। विकल्पों की रेंज लाइटवेट एम्बेडेड डेटाबेस से लेकर उत्पादन-स्तर के लिए डिज़ाइन किए गए वितरित सिस्टम तक होती है।
डॉकर डिप्लॉयमेंट विचार
उत्पादन स्व-होस्टिंग के लिए, अपने RAG सेटअप को कंटेनराइज़ करना डिप्लॉयमेंट और स्केलिंग को सरल बनाता है। जब Cognee या समान फ्रेमवर्क्स को Ollama के साथ चलाया जाता है:
# एक कंटेनर में Ollama चलाएं
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
# अपने मॉडल्स को पुल करें
docker exec -it ollama ollama pull gpt-oss:20b
# Cognee को कंटेनर एंडपॉइंट से कनेक्ट करने के लिए कॉन्फ़िगर करें
मॉडल पर्सिस्टेंस के लिए GPU पासथ्रू और वॉल्यूम माउंट्स को उचित रूप से कॉन्फ़िगर करने का सुनिश्चाय करें।
सीखे गए पाठ
1. हार्डवेयर के अनुसार उपकरणों का चयन करें: Cognee को क्लाउड-स्केल LLM के लिए डिज़ाइन किया गया है। अगर आप उपभोक्ता हार्डवेयर पर स्व-होस्टिंग कर रहे हैं, तो सरल आर्किटेक्चर अधिक व्यावहारिक हो सकते हैं।
2. संरचित आउटपुट कठिन है: स्थानीय LLMs से निरंतर स्कीमा अनुपालन प्राप्त करना चुनौतीपूर्ण बना रहता है। अगर आपका एप्लिकेशन संरचित आउटपुट पर निर्भर है, तो या तो वाणिज्यिक APIs का उपयोग करें या मजबूत वैलिडेशन और रिट्री लॉजिक लागू करें।
3. जल्दी परीक्षण करें: एक फ्रेमवर्क में प्रतिबद्ध होने से पहले, इसे अपने विशिष्ट उपयोग मामले और हार्डवेयर के साथ परीक्षण करें। जो डेमो में काम करता है, वह स्केल पर या आपके दस्तावेज़ों के साथ काम नहीं कर सकता।
4. हाइब्रिड दृष्टिकोणों का विचार करें: जटिल निकासी कार्यों के लिए वाणिज्यिक APIs का उपयोग करें और स्थानीय मॉडल्स को सरल प्रश्नों के लिए उपयोग करें ताकि लागत और क्षमता का संतुलन बनाया जा सके।
संबंधित पठन सामग्री
LLMs के साथ संरचित आउटपुट
संरचित आउटपुट को समझना Cognee जैसे फ्रेमवर्क्स के लिए महत्वपूर्ण है। ये लेख LLMs से निरंतर, स्कीमा-अनुपालित प्रतिक्रियाओं प्राप्त करने में गहराई से उतरते हैं:
- Cognee के लिए सही LLM का चयन: स्थानीय Ollama सेटअप
- LLMs के साथ संरचित आउटपुट: Ollama, Qwen3 & Python या Go
- प्रसिद्ध LLM प्रदाताओं में संरचित आउटपुट का तुलनात्मक अध्ययन - OpenAI, Gemini, Anthropic, Mistral और AWS Bedrock
- Ollama GPT-OSS संरचित आउटपुट समस्याएँ
RAG आर्किटेक्चर और कार्यान्वयन
ज्ञान निकासी और रिट्रीवल के लिए वैकल्पिक या पूरक दृष्टिकोणों के लिए:
- उन्नत RAG: LongRAG, Self-RAG और GraphRAG
- RAG के लिए वेक्टर स्टोर तुलनात्मक अध्ययन
- Python में MCP सर्वर बनाना: वेबसर्च और स्क्रेपिंग
एम्बेडिंग और रीरैंकिंग
बेहतर एम्बेडिंग्स और रीरैंकिंग के माध्यम से रिट्रीवल गुणवत्ता में सुधार:
- Ollama पर Qwen3 एम्बेडिंग और रीरैंकर मॉडल: स्टेट-ऑफ-द-आर्ट प्रदर्शन
- एम्बेडिंग मॉडल्स के साथ रीरैंकिंग
- Ollama और Qwen3 एम्बेडिंग मॉडल के साथ टेक्स्ट दस्तावेज़ों को रीरैंकिंग करना - Go में