我們為需要為人工智慧應用提供可靠、可立即投入生產的數據層的開發人員而構建
Cognee 實現了可擴展的模組化 ECL(Extract、Cognify、Load)管道,使您能夠互連和檢索過去的對話、文件和音訊轉錄,同時減少幻覺、開發人員工作量和成本。在 Google Colab 筆記本中嘗試或查看我們的文檔
如果您有疑問,請加入我們的 Discord 社區
pip 安裝 cognee
pip install 'cognee[postgres]'
詩歌添加科尼
詩歌添加 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 提供商,請查看我們的文件以了解更多信息
如果您使用 Network,請在 Graphistry 上建立帳戶以視覺化結果:
cognee.config.set_graphistry_config({ "username": "YOUR_USERNAME", "password": "YOUR_PASSWORD" })
(可選)要運行 UI,請前往 cognee-frontend 目錄並運行:
npm run dev
或在 docker 容器中運行所有內容:
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 欄位。
該腳本將運行預設管道:
import cogneeimport asynciofrom cognee.api.v1.search import SearchTypeasync def main():# 為cognee 建立一個乾淨的狀態-- 重置資料和系統狀態print("重置cognee 資料...")await cognee.prune. prune_data()await cognee.prune.prune_system(metadata=True)print("資料重置完成.n")# 將基於此文本創建cognee知識圖譜text = """ 自然語言處理(NLP)是計算機科學和信息的跨學科子領域"""print("向cognee 添加文本:")print(text.strip()) # 添加文本,並使其可供cognifyawait 使用cognee.add(text)print("文本添加成功。 n") print("執行cognify 建立知識圖...n")print("Cognify 流程步驟:")print("1.將文件分類:決定輸入文字的類型和類別。")print("2 .檢查權限:確保使用者擁有處理文字所需的權限。新增資料點:儲存提取的資料區塊以進行處理。快速完成Insights.n") # 使用LLM 和Cognee 建立知識圖await cognee.cognify()print("Cognify processcomplete.n") query_text = 'Tell me about NLP'print(f"Searching cognee for Insights with query: ' { query_text}'")# 查詢cognee 以取得新增文字的見解search_results = wait cognee.search(SearchType.INSIGHTS, query_text=query_text) print("搜尋結果:")# 顯示結果為 result_text in search_results:print(result_texts:print(result_texts:print(result_texts):print )# 範例輸出: # ({'id': UUID('bc338a39-64d6-549a-acec-da60846dd90d'), 'updated_at': datetime.datetime(2024, 11, 21, 12, 231, 188, 81, 12, 231, 18081, 8 =datetime.timezone .utc), 'name': '自然語言處理', 'description': '計算機科學和資訊檢索的跨學科子領域。 UUID('bc338a39- 64d6-549a-acec-da60846dd90d'), 'target_node_id': UUID('6218d-eb6a-5759-a864-b3419755ffe0'. , 23, 15, 473137 , tzinfo=datetime.timezone.utc)}, {'id': UUID('6218d'-eb6a-5759-a864-b3419755ffe0'), 'updatedbab_at': date. 12, 23, 1 , 211808, tzinfo=datetime.timezone.utc), 'name': '電腦科學', 'description': '計算與資訊處理的研究。節點和關係在知識圖譜中:# - 第一個元素是來源節點(例如,'自然語言處理')。三個元素是目標節點節點(例如「計算機科學」)。
執行此腳本時,您將在控制台中看到逐步訊息,幫助您追蹤執行流程並了解腳本在每個階段執行的操作。此範例的一個版本位於: examples/python/simple_example.py
cognee 框架由可分組為管道的任務組成。每個任務可以是業務邏輯的獨立部分,可以與其他任務綁定以形成管道。這些任務將資料儲存到您的記憶體儲存中,使您能夠搜尋過去對話、文件或您儲存的任何其他資料的相關上下文。
以下是它如何找到預設 cogniify 管道的範例:
要為管道運行準備數據,首先我們需要將其添加到元存儲中並對其進行規範化:
從以下開始:
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 模型,然後在分析每個區塊後將資料儲存在圖和向量儲存中。我們僅提供了一個片段供參考,但請隨意查看我們的儲存庫中的實作。
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 預設管道。
Cognee 支援針對不同操作的多種工具和服務:
模組化:Cognee 本質上是模組化的,使用分組到管道中的任務
本機設定:預設情況下,LanceDB 與 NetworkX 和 OpenAI 一起在本地運行。
向量儲存:Cognee 支援 LanceDB、Qdrant、PGVector 和 Weaviate 進行向量儲存。
語言模型 (LLM) :您可以使用 Anyscale 或 Ollama 作為您的 LLM 提供者。
圖儲存:除了 NetworkX 之外,還支援 Neo4j 進行圖儲存。
使用者管理:建立個人使用者圖表並管理權限
在這裡查看我們的演示筆記本
請參閱 cognee 快速入門指南以取得重要的設定資訊。
碼頭工人組成
請參閱 cognee 開髮指南以取得重要的測試版資訊和使用說明。
pip 安裝 cognee
<樣式>表格{寬度:100%; } </風格>
姓名 | 類型 | 目前狀態 | 已知問題 |
---|---|---|---|
奎德蘭特 | 向量 | 穩定✅ | |
韋維阿特 | 向量 | 穩定✅ | |
蘭斯資料庫 | 向量 | 穩定✅ | |
新4j | 圖形 | 穩定✅ | |
網路X | 圖形 | 穩定✅ | |
福克資料庫 | 向量/圖形 | 不穩定 | |
PG向量 | 向量 | 不穩定 | Postgres DB 傳回逾時錯誤 |