ai-due-diligence-copilot
AI Due Diligence Copilot
AI Due Diligence Copilot — это комплексная система анализа финансовых документов, которая обрабатывает корпоративные отчеты (10-K / 10-Q), извлекает структурированную финансовую информацию, находит подтверждающие доказательства и отвечает на вопросы аналитиков, используя наиболее надежный доступный источник.
В отличие от многих AI-приложений, полностью полагающихся на LLM, эта система интеллектуально направляет каждый вопрос либо:
к структурированным финансовым данным, хранящимся в PostgreSQL
к извлеченным доказательствам из документов через конвейер генерации с дополненной выборкой (RAG)
к комбинации обоих подходов
Для повышения достоверности сгенерированные ответы могут быть оценены с помощью классификатора обоснованности на основе PyTorch, который проверяет, подтверждаются ли утверждения извлеченными доказательствами.
Зачем этот проект?
Финансовым аналитикам часто нужны ответы, которые:
Фактически точны
Объяснимы
Прослеживаются до исходных документов
Традиционные ассистенты на основе LLM могут галлюцинировать цифры или предоставлять неподтвержденные утверждения.
Этот проект решает эту проблему следующим образом:
Использование SQL для количественных рассуждений
Использование RAG для качественного понимания документов
Использование оценки обоснованности для проверки поддержки доказательствами
Поддержка необязательного синтеза ответов на основе Claude, при этом система полностью функциональна без каких-либо платных API
Для более детального описания реализации и проектных решений см.:
ARCHITECTURE.mdRelated MCP server: SEC-MCP
Возможности
Загрузка документов
Загрузка финансовых отчетов (
.txt,.pdf,.md)Автоматическая очистка и разбиение документов на фрагменты
Отслеживание метаданных отчетов
Постоянное хранение в PostgreSQL
Извлечение структурированных финансовых показателей
В настоящее время извлекаются и сохраняются:
Выручка
Операционная маржа
Чистая прибыль
Расходы на НИОКР
Денежные средства и их эквиваленты
Эти показатели хранятся в PostgreSQL и могут быть запрошены напрямую для количественного анализа.
Интеллектуальная маршрутизация запросов
Система автоматически определяет, должен ли вопрос быть обработан через:
Структурированный SQL-запрос
Поиск по документам (RAG)
SQL + RAG
Примеры:
Вопрос | Маршрут |
Как изменилась операционная маржа? | SQL |
С какими рисками поставщиков сталкивается компания? | RAG |
Как изменилась маржа и почему? | SQL + RAG |
Интеграция MCP-инструментов
Реализованы инструменты Model Context Protocol (MCP):
Поиск компании
Калькулятор финансовых коэффициентов
Поиск по документам
Оценка обоснованности
Легковесный классификатор на PyTorch оценивает, подтверждаются ли сгенерированные утверждения извлеченными доказательствами.
Выходные данные включают:
Оценки обоснованности
Классификацию поддержки на уровне утверждений
Индикаторы уверенности
Тестовый стенд для оценки
Встроенная система оценки, измеряющая:
Точность маршрутизации
Релевантность поиска
Обоснованность
Задержку
Интерактивная панель управления
Веб-интерфейс для:
Загрузки отчетов
Ответов на вопросы
Просмотра решений о маршрутизации
Просмотра использования инструментов
Просмотра оценок обоснованности
Архитектура системы
Financial Filing
│
▼
Document Ingestion
│
▼
Chunking
│
▼
Metric Extraction + Vectorization
(TF-IDF + SVD)
│ │
▼ ▼
PostgreSQL Vector Store
▲ ▲
│ │
User Query ───► Query Router ───┘
│
┌──────────┴──────────┐
▼ ▼
SQL Financial Route RAG Retrieval
▼ ▼
Financial Metrics Evidence Search
└──────────┬──────────┘
▼
Answer Generation
▼
Groundedness Evaluation
▼
Final ResponseРежимы генерации ответов
1. Офлайн / локальный режим (по умолчанию)
Не требует ключей API.
Система отвечает на вопросы, используя:
Финансовые данные PostgreSQL
Поиск RAG
Экстрактивную генерацию ответов
Оценку обоснованности на PyTorch
Этот режим использовался во время разработки и тестирования.
2. Режим с поддержкой Claude (необязательно)
Если предоставлен ключ API Anthropic:
ANTHROPIC_API_KEY=your_api_key_hereизвлеченные доказательства могут быть переданы в Claude для генерации ответов на естественном языке.
Конвейер:
User Query
↓
Retrieval / SQL
↓
Claude
↓
Groundedness Evaluation
↓
Final ResponseClaude используется только для синтеза ответов.
Система не зависит от Claude для:
Поиска
Маршрутизации запросов
Финансовых расчетов
Оценки обоснованности
Если ключ API отсутствует, приложение автоматически переключается на локальный экстрактивный конвейер.
Технологический стек
Бэкенд
Технология | Назначение |
FastAPI | API-фреймворк |
Uvicorn | ASGI-сервер |
Pydantic | Валидация данных |
База данных
Технология | Назначение |
PostgreSQL | Основная база данных |
SQLAlchemy | ORM |
Машинное обучение
Технология | Назначение |
PyTorch | Классификатор обоснованности |
Scikit-Learn | Конвейер поиска |
NumPy | Числовые операции |
Поиск
Компонент | Назначение |
TF-IDF | Векторизация документов |
Truncated SVD | Плотное семантическое представление |
Cosine Similarity | Ранжирование результатов поиска |
AI-инструменты
Компонент | Назначение |
MCP Tools | Структурированный доступ к инструментам |
Query Router | Выбор маршрута |
Groundedness Evaluator | Проверка доказательств |
Структура проекта
diligence-copilot/
│
├── app/
│ ├── db/
│ ├── ingestion/
│ ├── ml/
│ ├── rag/
│ ├── mcp_tools/
│ └── main.py
│
├── data/
│
├── scripts/
│ └── setup_postgres.sql
│
├── tests/
│
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── ARCHITECTURE.md
└── README.mdУстановка
Предварительные требования
Python 3.11+
PostgreSQL 16+ (протестировано на PostgreSQL 17.11)
Git
1. Клонирование репозитория
git clone <repository-url>
cd diligence-copilot2. Создание виртуального окружения
Windows
python -m venv venv
.\venv\Scripts\Activate.ps1Linux / macOS
python -m venv venv
source venv/bin/activate3. Установка зависимостей
Установите PyTorch только для CPU:
pip install torch --index-url https://download.pytorch.org/whl/cpuУстановите требования проекта:
pip install -r requirements.txt4. Настройка PostgreSQL
Выполните:
psql -U postgres -f scripts/setup_postgres.sqlЭто создаст:
базу данных
diligence_copilotпользователя
diligence_appнеобходимые разрешения
5. Создание набора данных для обоснованности
python -m app.ml.build_dataset6. Обучение классификатора обоснованности
python -m app.ml.groundedness7. Запуск приложения
uvicorn app.main:app --reloadПриложение:
http://localhost:8000Документация API:
http://localhost:8000/docsDocker
docker-compose up --buildПроверка работы
Создание тестового отчета
Total revenue for fiscal year 2024 was $500 million.
Operating margin for fiscal year 2024 was 12.5%, compared to 10.1% in fiscal year 2023.
The company faces significant risk from a single supplier located in Vietnam.Загрузка отчета
Используйте:
Тикер: TEST
Компания: Test Company
Фискальный период: FY2024
Пример вывода:
Done: 1 chunks, 3 financial metrics extracted.Тестирование финансовых рассуждений
Вопрос:
What was the change in operating margin?Пример вывода:
operating_margin moved from 10.1 (FY2023)
to 12.5 (FY2024), a change of 23.76%.Маршрут:
SQLИнструмент:
financial_ratio_calculatorТестирование поиска
Вопрос:
What supplier risks does the company face?Пример вывода:
The company faces significant risk from a single supplier located in Vietnam.Примечание: для очень маленьких отчетов, которые помещаются в один фрагмент, поиск может вернуть весь фрагмент, а не отдельное предложение.
Маршрут:
RAGЗапуск оценки
python -m app.eval.run_evalРезультаты
Проверено на всем конвейере:
Загрузка документов
Извлечение финансовых показателей
Сохранение в PostgreSQL
Маршрутизация запросов
Финансовые рассуждения на основе SQL
Анализ рисков на основе поиска
Оценка обоснованности
Развертывание FastAPI
Пример результатов оценки
Метрика | Значение |
Точность маршрутизации | 1.00 |
Средняя релевантность поиска | 0.67 |
Средняя задержка | ~30ms |
Классификатор обоснованности
Метрика | Значение |
Точность | 0.70 – 0.90 |
Полнота | 0.75 – 1.00 |
Результаты немного варьируются, потому что набор данных для оценки намеренно небольшой.
Ограничения
Классификатор обоснованности обучен на 38 размеченных примерах
Извлечение финансовых показателей в настоящее время использует правила на основе шаблонов
Поиск использует TF-IDF + SVD вместо трансформерных эмбеддингов
Векторный индекс находится в памяти и оптимизирован для демонстрационных нагрузок
Интеграция с Claude необязательна и не требуется для основной функциональности
Будущие улучшения
Эмбеддинги на основе трансформеров
Гибридный поиск (ключевые слова + векторный)
Более крупные наборы данных для обоснованности
Резервное извлечение на основе LLM
Многошаговые агентные рабочие процессы
Интеграция pgvector
Сравнение нескольких документов
Автоматическая генерация аналитических отчетов
This server cannot be deployed
Maintenance
Related MCP Connectors
Financial data and research MCP for US/CN/JP equities: filings, statements, ownership, signals.
Paid bilingual MCP tools for evidence-linked SEC filing risk and finance-author track records.
MCP server for VC pitch-deck scoring, thesis-fit matching, and deal-flow management.
Financial data MCP for market, company, news, macro, and US Congress research.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for SEC EDGAR that provides real-time access to filings, financial statements, and full-text search across all EDGAR documents.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceMCP server for analyzing SEC filings (10-K, 10-Q, 8-K) with industry-aware financial extraction and BERT-based NLP.1MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides deterministic finance tools for SEC filing analysis, enabling LLMs to compute financial ratios, fetch filings, and perform equity research without hallucinated numbers.MIT
- AlicenseAqualityBmaintenanceAn MCP server that wraps SEC EDGAR APIs to provide company financial data, screening metrics, and disclosure signals for investment diligence, with every figure traced to its source filing.8MIT