เราสร้างขึ้นสำหรับนักพัฒนาที่ต้องการชั้นข้อมูลที่เชื่อถือได้และพร้อมสำหรับการใช้งานจริงสำหรับแอปพลิเคชัน AI
Cognee ใช้ไปป์ไลน์ ECL แบบโมดูลาร์ (แยก, Cognify, โหลด) ที่ปรับขนาดได้ ซึ่งช่วยให้คุณสามารถเชื่อมต่อและเรียกข้อมูลการสนทนา เอกสาร และการถอดเสียงในอดีต ในขณะที่ลดภาพหลอน ความพยายามของนักพัฒนา และต้นทุน ลองใช้ในสมุดบันทึก Google Colab หรือดูเอกสารประกอบของเรา
หากคุณมีคำถาม เข้าร่วมชุมชน Discord ของเรา
pip ติดตั้ง cognee
pip ติดตั้ง 'cognee [postgres]'
บทกวีเพิ่ม cognee
บทกวีเพิ่ม cognee -E postgres
import os os.environ["LLM_API_KEY"] = "YOUR OPENAI_API_KEY"
หรือ
import cognee cognee.config.set_llm_api_key("YOUR_OPENAI_API_KEY")
คุณยังสามารถตั้งค่าตัวแปรโดยการสร้างไฟล์ .env นี่คือเทมเพลตของเรา หากต้องการใช้ผู้ให้บริการ LLM รายอื่น สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบของเรา
หากคุณใช้เครือข่าย ให้สร้างบัญชีบน Graphistry เพื่อแสดงผลลัพธ์เป็นภาพ:
cognee.config.set_graphistry_config({ "username": "YOUR_USERNAME", "password": "YOUR_PASSWORD" })
(ทางเลือก) หากต้องการรัน UI ให้ไปที่ไดเร็กทอรี cognee-frontend และรัน:
npm run dev
หรือรันทุกอย่างในคอนเทนเนอร์นักเทียบท่า:
docker-compose up
จากนั้นไปที่ localhost:3000
หากคุณต้องการใช้ Cognee กับ PostgreSQL ตรวจสอบให้แน่ใจว่าได้ตั้งค่าต่อไปนี้ในไฟล์ .env:
DB_PROVIDER=postgres DB_HOST=postgres DB_PORT=5432 DB_NAME=cognee_db DB_USERNAME=cognee DB_PASSWORD=cognee
ขั้นแรก ให้คัดลอก .env.template
ไปที่ .env
และเพิ่มคีย์ OpenAI API ของคุณลงในฟิลด์ LLM_API_KEY
สคริปต์นี้จะเรียกใช้ไปป์ไลน์เริ่มต้น:
นำเข้า cognee นำเข้า asynciofrom cognee.api.v1.search นำเข้า SearchTypeasync def main():# สร้างกระดานชนวนใหม่ทั้งหมดสำหรับ cognee -- รีเซ็ตข้อมูลและสถานะระบบ พิมพ์ ("การรีเซ็ตข้อมูล cognee ... ") รอ cognee.prune.prune_data () รอ cognee.prune.prune_system(metadata=True)print("Data Reset complete.n")# กราฟความรู้ Cognee จะถูกสร้างขึ้นตาม texttext นี้ = """ การประมวลผลภาษาธรรมชาติ (NLP) เป็นสาขาย่อยสหวิทยาการของวิทยาการคอมพิวเตอร์และการเรียกค้นข้อมูล """print("Adding text to cognee:")print(text.strip()) # เพิ่มข้อความ และ ทำให้พร้อมใช้งานสำหรับ cognifyawait cognee.add(text)print("ข้อความเพิ่มเรียบร้อยแล้วn") print("กำลังรัน cognify เพื่อสร้างกราฟความรู้...n")print("Cognify กระบวนการขั้นตอน:")print("1. การจัดหมวดหมู่เอกสาร: การกำหนดประเภทและประเภทของข้อความที่ป้อน")print("2. การตรวจสอบสิทธิ์: ตรวจสอบให้แน่ใจว่าผู้ใช้มีสิทธิ์ที่จำเป็นในการประมวลผลข้อความ")print("3. การแยกส่วนข้อความ: การแยกส่วน ข้อความเป็นประโยคหรือวลีเพื่อการวิเคราะห์")พิมพ์("4. การเพิ่มจุดข้อมูล: การจัดเก็บส่วนที่แยกออกมาเพื่อการประมวลผล")print("5. การสร้างกราฟความรู้: การแยกเอนทิตีและความสัมพันธ์เพื่อสร้างกราฟความรู้")print("6. การสรุปข้อความ: การสร้างการสรุปโดยย่อของเนื้อหาเพื่อความรวดเร็ว Insights.n") # ใช้ LLM และ Cognee เพื่อสร้างความรู้ graphawait cognee.cognify()print("Cognify process complete.n") query_text = 'บอกฉันเกี่ยวกับ NLP'print(f"การค้นหา cognee สำหรับข้อมูลเชิงลึกด้วยข้อความค้นหา: '{query_text}'")# การค้นหา cognee สำหรับข้อมูลเชิงลึกใน textsearch_results ที่เพิ่มเข้ามา = await cognee.search(SearchType.INSIGHTS, query_text=query_text) print("ผลการค้นหา:" )# แสดงผลลัพธ์สำหรับ result_text ใน search_results:print(result_text)# ผลลัพธ์ตัวอย่าง: # ({'id': UUID('bc338a39-64d6-549a-acec-da60846dd90d'), 'updated_at': datetime.datetime(2024, 11, 21, 12, 23, 1, 211808, tzinfo=datetime.timezone.utc), 'ชื่อ': 'การประมวลผลภาษาธรรมชาติ', 'คำอธิบาย': 'สาขาย่อยแบบสหวิทยาการของวิทยาการคอมพิวเตอร์และการดึงข้อมูล'}, {'relationship_name': 'is_a_subfield_of', 'source_node_id': UUID('bc338a39-64d6-549a-acec-da60846dd90d'), 'target_node_id': UUID('6218dbab-eb6a-5759-a864-b3419755ffe0'), 'updated_at': datetime.datetime(2024, 11, 21, 12, 23, 15, 473137, tzinfo=datetime.timezone.utc)}, {'id ': UUID('6218dbab-eb6a-5759-a864-b3419755ffe0'), 'updated_at': datetime.datetime(2024, 11, 21, 12, 23, 1, 211808, tzinfo=datetime.timezone.utc), 'ชื่อ': 'วิทยาการคอมพิวเตอร์', 'คำอธิบาย': 'การศึกษาการคำนวณและการประมวลผลข้อมูล'}) # (...)## มันแสดงถึงโหนดและความสัมพันธ์ในกราฟความรู้:# - องค์ประกอบแรกคือโหนดต้นทาง (เช่น 'การประมวลผลภาษาธรรมชาติ').# - องค์ประกอบที่สองคือความสัมพันธ์ระหว่างโหนด (เช่น 'is_a_subfield_of').# - องค์ประกอบที่สามคือโหนดเป้าหมาย (เช่น 'วิทยาการคอมพิวเตอร์').ถ้า __name__ == '__main__':asyncio.run(หลัก())
เมื่อคุณเรียกใช้สคริปต์นี้ คุณจะเห็นข้อความทีละขั้นตอนในคอนโซลที่ช่วยคุณติดตามโฟลว์การดำเนินการและทำความเข้าใจว่าสคริปต์กำลังทำอะไรในแต่ละขั้นตอน เวอร์ชันของตัวอย่างนี้อยู่ที่นี่: examples/python/simple_example.py
กรอบงาน Cognee ประกอบด้วยงานที่สามารถจัดกลุ่มเป็นไปป์ไลน์ได้ แต่ละงานสามารถเป็นส่วนหนึ่งของตรรกะทางธุรกิจที่เป็นอิสระ ซึ่งสามารถเชื่อมโยงกับงานอื่นเพื่อสร้างไปป์ไลน์ได้ งานเหล่านี้จะเก็บข้อมูลไว้ในที่เก็บหน่วยความจำของคุณ ทำให้คุณสามารถค้นหาบริบทที่เกี่ยวข้องของการสนทนา เอกสาร หรือข้อมูลอื่นใดที่คุณเก็บไว้ในอดีตได้
นี่คือตัวอย่างลักษณะที่ปรากฏของไปป์ไลน์การรับรู้เริ่มต้น:
เพื่อเตรียมข้อมูลสำหรับการรันไปป์ไลน์ ก่อนอื่นเราต้องเพิ่มข้อมูลลงใน metastore ของเราและทำให้เป็นมาตรฐาน:
เริ่มต้นด้วย:
text = """Natural language processing (NLP) is an interdisciplinary subfield of computer science and information retrieval""" await cognee.add(text) # Add a new piece of information
ในขั้นตอนถัดไปเราสร้างงาน งานอาจเป็นตรรกะทางธุรกิจใดก็ได้ที่เราต้องการ แต่ส่วนสำคัญคือควรรวมไว้ในฟังก์ชันเดียว
ที่นี่เราจะแสดงตัวอย่างของการสร้างตัวแยกประเภท LLM ไร้เดียงสาที่ใช้โมเดล Pydantic จากนั้นจัดเก็บข้อมูลทั้งในกราฟและร้านค้าเวกเตอร์หลังจากวิเคราะห์แต่ละส่วน เราให้ไว้เพียงตัวอย่างข้อมูลสำหรับการอ้างอิง แต่อย่าลังเลที่จะตรวจสอบการใช้งานใน repo ของเรา
async def chunk_naive_llm_classifier( data_chunks: list[DocumentChunk], classification_model: Type[BaseModel] ): # Extract classifications asynchronously chunk_classifications = await asyncio.gather( *(extract_categories(chunk.text, classification_model) for chunk in data_chunks) ) # Collect classification data points using a set to avoid duplicates classification_data_points = { uuid5(NAMESPACE_OID, cls.label.type) for cls in chunk_classifications } | { uuid5(NAMESPACE_OID, subclass.value) for cls in chunk_classifications for subclass in cls.label.subclass } vector_engine = get_vector_engine() collection_name = "classification" # Define the payload schema class Keyword(BaseModel): uuid: str text: str chunk_id: str document_id: str # Ensure the collection exists and retrieve existing data points if not await vector_engine.has_collection(collection_name): await vector_engine.create_collection(collection_name, payload_schema=Keyword) existing_points_map = {} else: existing_points_map = {} return data_chunks ...
เรามีงานมากมายที่สามารถใช้ในไปป์ไลน์ของคุณได้ และคุณยังสามารถสร้างงานให้เหมาะกับตรรกะทางธุรกิจของคุณได้
เมื่อเราได้งานแล้ว ก็ถึงเวลาจัดกลุ่มงานเหล่านั้นเป็นไปป์ไลน์ ตัวอย่างข้อมูลแบบง่ายนี้สาธิตวิธีการเพิ่มงานลงในไปป์ไลน์ และวิธีที่งานสามารถส่งต่อจากที่หนึ่งไปยังอีกที่หนึ่งได้
Task( chunk_naive_llm_classifier, classification_model = cognee_config.classification_model, ) pipeline = run_tasks(tasks, documents)
หากต้องการดูรหัสการทำงาน ให้ตรวจสอบ cognee.api.v1.cognify ไปป์ไลน์เริ่มต้นใน repo ของเรา
Cognee รองรับเครื่องมือและบริการที่หลากหลายสำหรับการดำเนินงานที่แตกต่างกัน:
แบบโมดูลาร์ : Cognee เป็นแบบโมดูลาร์โดยธรรมชาติ โดยใช้งานที่จัดกลุ่มเป็นไปป์ไลน์
การตั้งค่าท้องถิ่น : ตามค่าเริ่มต้น LanceDB จะทำงานภายในเครื่องด้วย NetworkX และ OpenAI
Vector Stores : Cognee รองรับ LanceDB, Qdrant, PGVector และ Weaviate สำหรับการจัดเก็บเวกเตอร์
โมเดลภาษา (LLM) : คุณสามารถใช้ Anyscale หรือ Ollama เป็นผู้ให้บริการ LLM ของคุณได้
ร้านค้ากราฟ : นอกจาก NetworkX แล้ว Neo4j ยังรองรับการจัดเก็บกราฟอีกด้วย
การจัดการผู้ใช้ : สร้างกราฟผู้ใช้แต่ละรายและจัดการสิทธิ์
ตรวจสอบสมุดบันทึกสาธิตของเราที่นี่
โปรดดูคู่มือเริ่มต้นใช้งานด่วนของ cognee สำหรับข้อมูลการกำหนดค่าที่สำคัญ
นักเทียบท่าเขียนขึ้น
โปรดดูคู่มือการพัฒนา Cognee สำหรับข้อมูลเบต้าที่สำคัญและคำแนะนำการใช้งาน
pip ติดตั้ง cognee
<สไตล์> ตาราง { ความกว้าง: 100%; } </สไตล์>
ชื่อ | พิมพ์ | สถานะปัจจุบัน | ปัญหาที่ทราบ |
---|---|---|---|
คิวดรานท์ | เวกเตอร์ | มั่นคง ✅ | |
วีเวียต | เวกเตอร์ | มั่นคง ✅ | |
แลนซ์ดีบี | เวกเตอร์ | มั่นคง ✅ | |
นีโอ4เจ | กราฟ | มั่นคง ✅ | |
เน็ตเวิร์กเอ็กซ์ | กราฟ | มั่นคง ✅ | |
ฟัลคอร์ดีบี | เวกเตอร์/กราฟ | ไม่เสถียร | |
PGVector | เวกเตอร์ | ไม่เสถียร | Postgres DB ส่งคืนข้อผิดพลาดการหมดเวลา |