Kami membangun untuk pengembang yang membutuhkan lapisan data siap produksi yang andal untuk aplikasi AI
Cognee mengimplementasikan pipeline ECL (Extract, Cognify, Load) yang dapat diskalakan dan modular yang memungkinkan Anda menghubungkan dan mengambil percakapan, dokumen, dan transkripsi audio masa lalu sekaligus mengurangi halusinasi, upaya pengembang, dan biaya. Cobalah di notebook Google Colab atau lihat dokumentasi kami
Jika Anda memiliki pertanyaan, bergabunglah dengan komunitas Discord kami
pip instal cognee
pip instal 'cognee[postgres]'
puisi menambahkan cognee
puisi tambahkan cognee -E postgres
import os os.environ["LLM_API_KEY"] = "YOUR OPENAI_API_KEY"
atau
import cognee cognee.config.set_llm_api_key("YOUR_OPENAI_API_KEY")
Anda juga dapat mengatur variabel dengan membuat file .env, ini template kami. Untuk menggunakan penyedia LLM yang berbeda, untuk info lebih lanjut lihat dokumentasi kami
Jika Anda menggunakan Jaringan, buat akun di Graphistry untuk memvisualisasikan hasil:
cognee.config.set_graphistry_config({ "username": "YOUR_USERNAME", "password": "YOUR_PASSWORD" })
(Opsional) Untuk menjalankan UI, buka direktori cognee-frontend dan jalankan:
npm run dev
atau jalankan semuanya dalam wadah buruh pelabuhan:
docker-compose up
Kemudian navigasikan ke localhost:3000
Jika Anda ingin menggunakan Cognee dengan PostgreSQL, pastikan untuk menetapkan nilai berikut di file .env:
DB_PROVIDER=postgres DB_HOST=postgres DB_PORT=5432 DB_NAME=cognee_db DB_USERNAME=cognee DB_PASSWORD=cognee
Pertama, salin .env.template
ke .env
dan tambahkan kunci OpenAI API Anda ke bidang LLM_API_KEY.
Skrip ini akan menjalankan pipeline default:
import cogneeimport asynciofrom cognee.api.v1.search import SearchTypeasync def main():# Buat yang bersih untuk cognee -- reset data dan sistem stateprint("Reset data cognee...")tunggu cognee.prune.prune_data()await cognee.prune.prune_system(metadata=True)print("Reset data selesai.n")# grafik pengetahuan cognee akan dibuat berdasarkan teks initext = """ Pemrosesan bahasa alami (NLP) adalah subbidang interdisiplin ilmu komputer dan pengambilan informasi. """print("Menambahkan teks ke cognee:")print(text.strip()) # Tambahkan teks, dan buat tersedia for cognifyawait cognee.add(text)print("Teks berhasil ditambahkan.n") print("Menjalankan cognify untuk membuat grafik pengetahuan...n")print("Mengenali langkah-langkah proses:")print("1. Mengklasifikasikan dokumen : Menentukan jenis dan kategori teks masukan.")print("2. Memeriksa izin: Memastikan pengguna memiliki hak yang diperlukan untuk memproses teks.")print("3. Mengekstrak potongan teks: Memecah teks menjadi kalimat atau frasa untuk analisis.")print("4. Menambahkan titik data: Menyimpan potongan yang diekstrak untuk diproses.")print("5. Menghasilkan grafik pengetahuan: Mengekstraksi entitas dan hubungan untuk membentuk grafik pengetahuan.")print("6. Meringkas teks: Membuat ringkasan singkat dari konten dengan cepat wawasan.n") # Gunakan LLM dan cognee untuk membuat pengetahuan graphawait cognee.cognify()print("Proses kognitif selesai.n") query_text = 'Ceritakan tentang NLP'print(f"Mencari cognee untuk wawasan dengan kueri: '{query_text}'")# Query cognee untuk wawasan tentang teks yang ditambahkansearch_results = menunggu cognee.search(SearchType.INSIGHTS, query_text=query_text) print("Hasil pencarian:")# Tampilkan hasil untuk teks_hasil di hasil_pencarian:print (teks_hasil)# Contoh keluaran: # ({'id': UUID('bc338a39-64d6-549a-acec-da60846dd90d'), 'updated_at': datetime.datetime(2024, 11, 21, 12, 23, 1, 211808, tzinfo=datetime.timezone.utc), 'nama': 'pemrosesan bahasa alami', 'deskripsi': 'Subbidang komputer interdisipliner pengambilan sains dan informasi.'}, {'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), 'nama': 'ilmu komputer', 'deskripsi': 'Studi tentang komputasi dan informasi pemrosesan.'}) # (...)## Ini mewakili node dan hubungan dalam grafik pengetahuan:# - Elemen pertama adalah node sumber (misalnya, 'pemrosesan bahasa alami').# - Elemen kedua adalah hubungan antar node (misalnya, 'is_a_subfield_of').# - Elemen ketiga adalah node target (misalnya, 'ilmu komputer').if __name__ == '__main__':asyncio.run(main())
Saat Anda menjalankan skrip ini, Anda akan melihat pesan langkah demi langkah di konsol yang membantu Anda melacak alur eksekusi dan memahami apa yang dilakukan skrip di setiap tahap. Versi contoh ini ada di sini: examples/python/simple_example.py
kerangka kerja cognee terdiri dari tugas-tugas yang dapat dikelompokkan ke dalam saluran pipa. Setiap tugas dapat menjadi bagian independen dari logika bisnis, yang dapat dikaitkan dengan tugas lain untuk membentuk alur. Tugas-tugas ini menyimpan data ke dalam penyimpanan memori Anda sehingga memungkinkan Anda mencari konteks relevan dari percakapan masa lalu, dokumen, atau data lain yang telah Anda simpan.
Berikut ini contoh tampilan pipeline kognitif default:
Untuk mempersiapkan data untuk menjalankan pipeline, pertama-tama kita perlu menambahkannya ke metastore dan menormalkannya:
Mulailah dengan:
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
Pada langkah selanjutnya kita membuat tugas. Tugasnya dapat berupa logika bisnis apa pun yang kita perlukan, namun yang terpenting adalah tugas tersebut harus diringkas dalam satu fungsi.
Di sini kami menunjukkan contoh pembuatan pengklasifikasi LLM naif yang mengambil model Pydantic dan kemudian menyimpan data di penyimpanan grafik dan vektor setelah menganalisis setiap potongan. Kami hanya menyediakan cuplikan untuk referensi, tetapi silakan lihat penerapannya di repo kami.
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 ...
Kami memiliki banyak tugas yang dapat digunakan dalam saluran Anda, dan Anda juga dapat membuat tugas agar sesuai dengan logika bisnis Anda.
Setelah kita mendapatkan tugas, sekarang saatnya mengelompokkannya ke dalam satu pipeline. Cuplikan yang disederhanakan ini menunjukkan bagaimana tugas dapat ditambahkan ke alur, dan bagaimana tugas tersebut dapat meneruskan informasi dari satu tugas ke tugas lainnya.
Task( chunk_naive_llm_classifier, classification_model = cognee_config.classification_model, ) pipeline = run_tasks(tasks, documents)
Untuk melihat kode yang berfungsi, periksa pipa default cognee.api.v1.cognify di repo kami.
Cognee mendukung berbagai alat dan layanan untuk berbagai operasi:
Modular : Cognee pada dasarnya bersifat modular, menggunakan tugas yang dikelompokkan ke dalam alur
Pengaturan Lokal : Secara default, LanceDB berjalan secara lokal dengan NetworkX dan OpenAI.
Toko Vektor : Cognee mendukung LanceDB, Qdrant, PGVector dan Weaviate untuk penyimpanan vektor.
Model Bahasa (LLM) : Anda dapat menggunakan Anyscale atau Ollama sebagai penyedia LLM Anda.
Penyimpanan Grafik : Selain NetworkX, Neo4j juga didukung untuk penyimpanan grafik.
Manajemen pengguna : Buat grafik pengguna individual dan kelola izin
Lihat buku catatan demo kami di sini
Silakan lihat Panduan Memulai Cepat cognee untuk informasi konfigurasi penting.
buruh pelabuhan menulis
Silakan lihat Panduan Pengembangan cognee untuk informasi beta penting dan petunjuk penggunaan.
pip instal cognee
<gaya> tabel { lebar: 100%; } </gaya>
Nama | Jenis | Keadaan saat ini | Masalah yang Diketahui |
---|---|---|---|
Qdrant | Vektor | Stabil ✅ | |
lemah | Vektor | Stabil ✅ | |
LanceDB | Vektor | Stabil ✅ | |
Neo4j | Grafik | Stabil ✅ | |
JaringanX | Grafik | Stabil ✅ | |
FalkorDB | Vektor/Grafik | Tidak stabil | |
Vektor PG | Vektor | Tidak stabil | Postgres DB mengembalikan kesalahan Timeout |