--- title: RAG AIEXP 0 emoji: πŸ”₯ colorFrom: blue colorTo: gray sdk: gradio sdk_version: 5.42.0 app_file: app.py pinned: false --- # AIEXP β€” RAG pipeline for normative documents (README) ΠšΡ€Π°Ρ‚ΠΊΠΎ: Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ содСрТит ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Π½ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (JSON/CSV/Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹/изобраТСния), Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² (ΠΌΠ°Ρ€ΠΊΠΈ стали, обозначСния соСдинСний), Ρ‡Π°Π½ΠΊΠΈΠ½Π³Π°, построСния Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ индСкса ΠΈ Gradio UI для сСмантичСского поиска ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ². --- ## Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ README 1. ВрСбования 2. Быстрая установка 3. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния / конфигурация 4. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… / ΠΊΡƒΠ΄Π° ΠΊΠ»Π°ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ 5. ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ pipeline) 6. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‡Π°Π½ΠΊΠΈΠ½Π³Π° ΠΈ частыС ошибки 7. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ индСкса ΠΈ созданиС query engine 8. Запуск прилоТСния (локально / Windows) 9. ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ 10. Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ 11. ЧастыС ошибки ΠΈ ΠΈΡ… исправлСния --- ## 1) ВрСбования - Python 3.10+ - pip, git - Доступ ΠΊ Hugging Face dataset (repo_id) для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ исходных JSON/CSV - API-ΠΊΠ»ΡŽΡ‡ΠΈ (для LLM / embeddings) ΠΏΡ€ΠΈ использовании ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ зависимостСй (создайтС requirements.txt): - llama-index (ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ вСрсия) - gradio>=5 - sentence-transformers - huggingface-hub - sentencepiece (Ссли Π½ΡƒΠΆΠ½ΠΎ) - pandas - cross-encoder - Π΄Ρ€ΡƒΠ³ΠΈΠ΅: см. ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ requirements --- ## 2) Быстрая установка Windows PowerShell: ```powershell python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt ``` Bash / Linux: ```bash python -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` --- ## 3) ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния / конфигурация ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ `config.py` ΠΈΠ»ΠΈ установитС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния: PowerShell: ```powershell $env:GOOGLE_API_KEY="your_google_api_key" $env:OPENAI_API_KEY="your_openai_api_key" $env:HF_TOKEN="your_hf_token" ``` Bash: ```bash export GOOGLE_API_KEY="your_google_api_key" export OPENAI_API_KEY="your_openai_api_key" export HF_TOKEN="your_hf_token" ``` ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ настройки Π² `config.py`: - CHUNK_SIZE (Ρ‚ΠΎΠΊΠ΅Π½Ρ‹/символы для тСкстов) - CHUNK_OVERLAP - MAX_CHARS_TABLE / MAX_ROWS_TABLE β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‡Π°Π½ΠΊΠΈΠ½Π³Π° Ρ‚Π°Π±Π»ΠΈΡ† - HF_REPO_ID, TABLE_DATA_DIR, JSON_FILES_DIR, IMAGE_DATA_DIR --- ## 4) Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ AIEXP_RAG/ │── app.py # Main entry point (Gradio) │── requirements.txt # Dependencies │── data/ # Documents, tables, images │── notebooks/ # Preprocessing notebooks │── src/ # Source code (preprocess + rag) - ВСкстовыС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹: JSON (с полями document_metadata, sections/subsections) - Π’Π°Π±Π»ΠΈΡ†Ρ‹: JSON (sheets β†’ headers, data, table_number, table_title, section, sheet_name) - Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ: CSV (строки с полями: ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, β„– Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ, НазваниС изобраТСния, ОписаниС) ΠŸΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ pipeline: - `load_json_documents` β€” парсит тСкстовыС Ρ€Π°Π·Π΄Π΅Π»Ρ‹ - `load_table_documents` β€” парсит Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ запускаСт `chunk_table_by_content` - `load_image_documents` β€” создаСт ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‡Π°Π½ΠΊΠΈ Если Π²Ρ‹ добавляСтС Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° HF, ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ ΠΈΡ… Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ (см. `config.py`). --- ## 5) Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ pipeline (пошагово) 1. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² с HF (JSON/ZIP/CSV) 2. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (text) 3. Нормализация: - `normalize_text` β€” Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏΡ‹ соСдинСний (C/Π‘) - `normalize_steel_designations` β€” Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΌΠ°Ρ€ΠΊΠΈ стали (Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Π° ↔ ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π°) 4. Π§Π°Π½ΠΊΠΈΠ½Π³: - ВСкст: SentenceSplitter (CHUNK_SIZE, CHUNK_OVERLAP) - Π’Π°Π±Π»ΠΈΡ†Ρ‹: ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ строки Π² Ρ‡Π°Π½ΠΊΠΈ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ (header + строки) Π΄ΠΎ MAX_CHARS_TABLE ΠΈΠ»ΠΈ MAX_ROWS_TABLE 5. ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅: ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ (type, document_id, table_number, table_title, section, connection_type) 6. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ VectorStoreIndex ΠΈΠ· всСх Ρ‡Π°Π½ΠΊΠΎΠ² --- ## 6) ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‡Π°Π½ΠΊΠΈΠ½Π³Π° ΠΈ частыС ошибки - Metadata length > chunk size: - Ошибка: ValueError: Metadata length (...) is longer than chunk size (1024). - РСшСниС: ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ CHUNK_SIZE ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ поля metadata (Π½Π΅ ΠΊΠ»Π°ΡΡ‚ΡŒ большиС тСксты Π² metadata). - Если строки Ρ‚Π°Π±Π»ΠΈΡ† ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ MAX_CHARS_TABLE Π½Π΅ даст эффСкта β€” провСряйтС Π΄Π»ΠΈΠ½Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… строк. - РСкомСндация: ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ограничСния ΠΏΠΎ символам ΠΈ ΠΏΠΎ числу строк (MAX_CHARS_TABLE ΠΈ MAX_ROWS_TABLE). --- ## 7) ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ индСкса ΠΈ query engine - create_vector_index(documents) β€” строит VectorStoreIndex ΠΈ Π»ΠΎΠ³ΠΈΡ€ΡƒΠ΅Ρ‚ статистику ΠΏΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ соСдинСний ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ. - create_query_engine(vector_index, vector_top_k, bm25_top_k, similarity_cutoff, hybrid_top_k) β€” ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ retriever (Vector + BM25 + QueryFusion). - Π Π΅Ρ€Π΅ΠΉΡ‚Π΅Ρ€ `rerank_nodes(query, nodes, reranker, top_k, min_score_threshold)` β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ CrossEncoder для Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ранТирования. Π‘ΠΎΠ²Π΅Ρ‚Ρ‹: - НормализуйтС document_id (ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ лишниС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, суффиксы Π³ΠΎΠ΄Π°) для Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ. - ΠŸΡ€ΠΈ поискС ΠΏΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ соСдинСний (C-25 / Π‘-25) всСгда Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ символ 'C'/'Π‘' Π² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π² запросС. --- ## 8) Запуск прилоТСния (Gradio) Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎ: ```bash python app.py ``` Π’Π°ΠΆΠ½ΠΎ: - Π’Ρ‹Π·ΠΎΠ² `gr.api(...)` Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ `with gr.Blocks(...) as demo:` Π±Π»ΠΎΠΊΠ°. - Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ рСгистрируСтС ΠΊΠ°ΠΊ Gradio API, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹Π΅ type-hints (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ `def retrieve_chunks(question: str, top_k: int = 20) -> list:`). --- ## 9) ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ - Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ `log_message(...)` β€” Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ подробностСй Π² stdout/Ρ„Π°ΠΉΠ». - Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ: - `debug_search_tables(vector_index, search_term="Π‘-25")` β€” Π½Π°ΠΉΠ΄Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°. - Π’ `create_query_engine` ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‰ΠΈΠΉ Π»ΠΎΠ³ (поиск ΠΏΠΎ 'C-25' / 'Π‘-25'). - ЧастыС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ: - Бколько Ρ‡Π°Π½ΠΊΠΎΠ² ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ: ΠΈΡ‚ΠΎΠ³ Π² `load_all_documents`. - ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΏΡ€Π΅Π²ΡŒΡŽ Ρ‡Π°Π½ΠΊΠΎΠ² ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ (ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 200 символов). - ДСдупликация: `deduplicate_nodes(nodes)` β€” ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹. --- ## 10) Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ 1. ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ JSON/CSV Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, согласованном с pipeline. 2. Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π² HF dataset (REPO_ID ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² config.py) Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ: - JSON β†’ `JSON_FILES_DIR` - Π’Π°Π±Π»ΠΈΡ†Ρ‹ β†’ `TABLE_DATA_DIR` - Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ (CSV) β†’ `IMAGE_DATA_DIR` 3. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ config (Ссли Π½ΠΎΠ²Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ) 4. ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚Π΅ `app.py` β€” ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ шаги ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ: - ЗапуститС `load_all_documents(...)` ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ индСкса Π·Π°Π½ΠΎΠ²ΠΎ (см. app.initialize_system). --- ## 11) ЧастыС ошибки ΠΈ быстрыС исправлСния - Gradio: "Cannot call api() outside of a gradio.Blocks context." β†’ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ `gr.api(...)` Π²Π½ΡƒΡ‚Ρ€ΡŒ Π±Π»ΠΎΠΊΠ°. - Gradio: "API endpoints must have type hints." β†’ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ type-hints Π² сигнатуру. - Pydantic / Document immutability: "can't set attribute 'text'" β†’ Π½Π΅ измСняйтС `doc.text` Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, создавайтС Π½ΠΎΠ²Ρ‹ΠΉ `Document(text=..., metadata=doc.metadata)`. - ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ слишком большиС β†’ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ metadata ΠΈΠ»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ CHUNK_SIZE. - ΠšΠΈΡ€ΠΈΠ»Π»ΠΈΡ‡Π΅ΡΠΊΠ°Ρ/латинская Π±ΡƒΠΊΠ²Π° 'C' mismatch β†’ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΈ Π² запросС, ΠΈ Π² Π΄Π°Π½Π½Ρ‹Ρ… (функция `normalize_text` / `normalize_connection_type`). --- ## ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ (Windows) Установка env vars (PowerShell): ```powershell $env:HF_TOKEN="hf_xxx" $env:GOOGLE_API_KEY="xxx" $env:OPENAI_API_KEY="xxx" python app.py ``` --- ## ΠšΠΎΠ½ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… (Π²Π°ΠΆΠ½ΠΎ) - Π₯Ρ€Π°Π½ΠΈΡ‚Π΅ Π² metadata минимально Π½ΡƒΠΆΠ½Ρ‹Π΅ поля: - type, document_id, table_number, table_title, section, connection_type, chunk_id/row_start/row_end (ΠΏΡ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‡Π°Π½ΠΊΠ°Ρ…) - Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ кладСния Π±ΠΎΠ»ΡŒΡˆΠΈΡ… тСкстов Π² metadata. --- ## Testing on Huggingface https://mrsimple01-rag-aiexp-01.hf.space/