Мы создаем для разработчиков, которым нужен надежный, готовый к использованию уровень данных для приложений искусственного интеллекта.
Cognee реализует масштабируемые модульные конвейеры ECL (Extract, Cogniify, Load), которые позволяют соединять и извлекать прошлые разговоры, документы и аудиотранскрипции, сокращая при этом галлюцинации, усилия разработчиков и затраты. Попробуйте это в блокноте Google Colab или ознакомьтесь с нашей документацией.
Если у вас есть вопросы, присоединяйтесь к нашему сообществу Discord.
пип установить когни
pip install 'cognee[postgres]'
поэзия, добавь кони
поэзия добавить когни -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" })
(Необязательно) Чтобы запустить пользовательский интерфейс, перейдите в каталог 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
и добавьте ключ API OpenAI в поле LLM_API_KEY.
Этот скрипт запустит конвейер по умолчанию:
import cogneeimport asynciofrom cognee.api.v1.search import SearchTypeasync def main():# Создать чистый лист для cognee -- сбросить данные и состояние системы("Сброс данных cognee...")await cognee.prune.prune_data()await cognee.prune.prune_system(metadata=True)print("Сброс данных завершен.n")# график знаний cognee будет создан на основе этого texttext = """ Обработка естественного языка (NLP) — это междисциплинарная область информатики и поиска информации. """print("Добавление текста в информацию:")print(text.strip()) # Добавьте текст и сделайте его доступным для распознавания.wait cognee.add(text)print("Текст успешно добавлен.n") print("Запускаем cogniify для создания знаний Graph...n")print("Опознание шагов процесса:")print("1. Классификация документа: определение типа и категории входного текста.")print("2. Проверка разрешений: проверка наличия у пользователя необходимые права для обработки текста.")print("3. Извлечение фрагментов текста: разбиение текста на предложения или фразы для анализа.")print("4. Добавление точек данных: сохранение извлеченных фрагментов для обработки.")print("5. Создание графа знаний: извлечение сущностей и связей для формирования графа знаний.")print("6. Обобщение текста: создание кратких изложений содержимого для быстрого Insights.n") # Используйте LLM и cognee для создания графа знаний await cognee.cognify()print("Процесс Cogniify Complete.n") query_text = 'Расскажите мне о NLP'print(f"Поиск информации с помощью запроса: '{query_text}'")# Запросить информацию о добавленном 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), 'name': «обработка естественного языка», «описание»: «Ан междисциплинарная область информатики и поиска информации.'}, {'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), 'name': «информатика», «описание»: «Изучение вычисления и обработка информации.'}) # (...)## Он представляет узлы и отношения в графе знаний:# - Первый элемент является исходным узлом (например, «обработка естественного языка»).# - Второй элемент — это связь между узлами (например, «is_a_subfield_of»).# — Третий элемент — это целевой узел (например, «информатика»).if __name__ == '__main__':asyncio.run(main())
Запустив этот скрипт, вы увидите в консоли пошаговые сообщения, которые помогут вам проследить поток выполнения и понять, что скрипт делает на каждом этапе. Версия этого примера находится здесь: examples/python/simple_example.py
Платформа cognee состоит из задач, которые можно сгруппировать в конвейеры. Каждая задача может быть независимой частью бизнес-логики, которую можно связать с другими задачами для формирования конвейера. Эти задачи сохраняют данные в вашем хранилище памяти, что позволяет вам искать соответствующий контекст прошлых разговоров, документов или любых других данных, которые вы сохранили.
Вот пример того, как выглядит конвейер распознавания по умолчанию:
Чтобы подготовить данные для запуска конвейера, сначала нам нужно добавить их в наше метахранилище и нормализовать:
Начните с:
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.cogniify по умолчанию в нашем репозитории.
Cognee поддерживает множество инструментов и сервисов для различных операций:
Модульность : Cognee является модульным по своей природе, используя задачи, сгруппированные в конвейеры.
Локальная настройка : по умолчанию LanceDB работает локально с NetworkX и OpenAI.
Хранилища векторов : Cognee поддерживает LanceDB, Qdrant, PGVector и Weaviate для хранения векторов.
Языковые модели (LLM) . В качестве поставщика LLM вы можете использовать Anyscale или Ollama.
Хранилища графов . Помимо NetworkX, для хранения графов также поддерживается Neo4j.
Управление пользователями : создание индивидуальных графиков пользователей и управление разрешениями.
Посмотрите наш демо-блокнот здесь
Пожалуйста, ознакомьтесь с кратким руководством пользователя cognee для получения важной информации о настройке.
докер составить
Пожалуйста, ознакомьтесь с Руководством по разработке Cognee для получения важной информации о бета-версии и инструкций по использованию.
пип установить когни
<стиль> таблица { ширина: 100%; } </стиль>
Имя | Тип | Текущее состояние | Известные проблемы |
---|---|---|---|
Кдрант | Вектор | Стабильный ✅ | |
Плетение | Вектор | Стабильный ✅ | |
ЛансДБ | Вектор | Стабильный ✅ | |
Neo4j | График | Стабильный ✅ | |
СетьX | График | Стабильный ✅ | |
ФалькорДБ | Вектор/график | Нестабильный | |
PGVector | Вектор | Нестабильный | Postgres DB возвращает ошибку тайм-аута |