cocoindex 0.2.1__tar.gz → 0.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cocoindex-0.2.1 → cocoindex-0.2.2}/Cargo.lock +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/Cargo.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/PKG-INFO +2 -2
- {cocoindex-0.2.1 → cocoindex-0.2.2}/README.md +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/examples/examples/academic_papers_index.md +6 -4
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/examples/examples/codebase_index.md +19 -12
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/examples/examples/custom_targets.md +7 -5
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/examples/examples/docs_to_knowledge_graph.md +8 -6
- cocoindex-0.2.2/docs/docs/examples/examples/image_search.md +270 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/examples/examples/manual_extraction.md +9 -7
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/examples/examples/multi_format_index.md +29 -26
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/examples/examples/patient_form_extraction.md +8 -6
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/examples/examples/photo_search.md +3 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/examples/examples/product_recommendation.md +7 -5
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/examples/examples/simple_vector_index.md +2 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/getting_started/installation.md +8 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/ops/targets.md +7 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/src/components/GitHubButton/index.tsx +3 -3
- cocoindex-0.2.2/docs/static/img/examples/codebase_index/chunk.png +0 -0
- cocoindex-0.2.2/docs/static/img/examples/codebase_index/cover.png +0 -0
- cocoindex-0.2.2/docs/static/img/examples/image_search/cover.png +0 -0
- cocoindex-0.2.2/docs/static/img/examples/image_search/embedding.png +0 -0
- cocoindex-0.2.2/docs/static/img/examples/image_search/flow.png +0 -0
- cocoindex-0.2.2/docs/static/img/examples/image_search/multi_modal_architecture.png +0 -0
- cocoindex-0.2.2/docs/static/img/examples/image_search/result.png +0 -0
- cocoindex-0.2.2/docs/static/img/examples/multi_format_index/colpali_architecture.png +0 -0
- cocoindex-0.2.2/docs/static/img/examples/multi_format_index/cover.png +0 -0
- cocoindex-0.2.2/docs/static/img/examples/multi_format_index/embed.png +0 -0
- cocoindex-0.2.2/docs/static/img/examples/multi_format_index/flow.png +0 -0
- cocoindex-0.2.2/docs/static/img/examples/multi_format_index/pages.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/yarn.lock +159 -191
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/amazon_s3_embedding/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/azure_blob_embedding/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/code_embedding/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/custom_output_files/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/docs_to_knowledge_graph/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/face_recognition/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/fastapi_server_docker/requirements.txt +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/gdrive_text_embedding/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/live_updates/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/manuals_llm_extraction/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/multi_format_indexing/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/paper_metadata/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/patient_intake_extraction/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/pdf_embedding/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/postgres_source/README.md +4 -5
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/postgres_source/main.py +1 -53
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/postgres_source/prepare_source_data.sql +1 -32
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/postgres_source/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/text_embedding/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/text_embedding_qdrant/pyproject.toml +1 -1
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/flow.py +45 -22
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/tests/test_transform_flow.py +31 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/targets/postgres.rs +16 -10
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/utils/mod.rs +1 -0
- cocoindex-0.2.2/src/utils/str_sanitize.rs +597 -0
- cocoindex-0.2.1/docs/docs/examples/examples/image_search.md +0 -214
- cocoindex-0.2.1/docs/static/img/examples/codebase_index/chunk.png +0 -0
- cocoindex-0.2.1/docs/static/img/examples/codebase_index/cover.png +0 -0
- cocoindex-0.2.1/docs/static/img/examples/codebase_index/usecase.png +0 -0
- cocoindex-0.2.1/docs/static/img/examples/image_search/cover.png +0 -0
- cocoindex-0.2.1/docs/static/img/examples/multi_format_index/cover.png +0 -0
- cocoindex-0.2.1/examples/postgres_source/.env.example +0 -22
- {cocoindex-0.2.1 → cocoindex-0.2.2}/.cargo/config.toml +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/.env.lib_debug +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/.github/ISSUE_TEMPLATE//360/237/220/233-bug-report.md" +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/.github/ISSUE_TEMPLATE//360/237/222/241-feature-request.md" +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/.github/scripts/update_version.sh +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/.github/workflows/CI.yml +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/.github/workflows/_doc_release.yml +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/.github/workflows/_test.yml +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/.github/workflows/docs.yml +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/.github/workflows/format.yml +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/.github/workflows/release.yml +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/.gitignore +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/.pre-commit-config.yaml +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/CODE_OF_CONDUCT.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/CONTRIBUTING.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/LICENSE +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/dev/neo4j.yaml +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/dev/postgres.yaml +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/.gitignore +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/about/community.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/ai/llm.mdx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/contributing/guide.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/contributing/new_built_in_target.mdx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/contributing/setup_dev_environment.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/core/basics.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/core/cli.mdx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/core/data_example.svg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/core/data_types.mdx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/core/flow_def.mdx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/core/flow_example.svg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/core/flow_methods.mdx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/core/settings.mdx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/custom_ops/custom_functions.mdx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/custom_ops/custom_targets.mdx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/examples/index.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/getting_started/markdown_files.zip +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/getting_started/overview.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/getting_started/quickstart.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/ops/functions.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/ops/sources.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/query.mdx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/tutorials/live_updates.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docs/tutorials/manage_flow_dynamically.mdx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/docusaurus.config.ts +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/package.json +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/sidebars.ts +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/src/css/custom.css +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/src/theme/DocCard/index.tsx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/src/theme/DocCard/styles.module.css +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/src/theme/DocCardList/index.tsx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/src/theme/DocCardList/styles.module.css +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/src/theme/Root.js +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/.nojekyll +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/docusaurus.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/academic_papers_index/abstract_chunks.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/academic_papers_index/basic_info.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/academic_papers_index/chunk_embedding.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/academic_papers_index/cover.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/academic_papers_index/first_page.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/academic_papers_index/flow.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/academic_papers_index/metadata.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/codebase_index/flow.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/custom_targets/convert.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/custom_targets/cover.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/docs_to_knowledge_graph/cover.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/docs_to_knowledge_graph/dedupe.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/docs_to_knowledge_graph/export_document.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/docs_to_knowledge_graph/export_relationship.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/docs_to_knowledge_graph/extract_relationship.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/docs_to_knowledge_graph/flow.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/docs_to_knowledge_graph/relationship.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/docs_to_knowledge_graph/summary.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/manual_extraction/cover.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/manual_extraction/extraction.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/manual_extraction/flow.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/manual_extraction/summary.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/patient_form_extraction/cover.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/patient_form_extraction/extraction.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/patient_form_extraction/fields.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/patient_form_extraction/flow.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/patient_form_extraction/tomarkdown.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/photo_search/cover.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/photo_search/extraction.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/photo_search/flow.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/product_recommendation/cover.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/product_recommendation/dedupe.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/product_recommendation/export_all.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/product_recommendation/export_product.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/product_recommendation/export_taxonomy.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/product_recommendation/extract_product.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/product_recommendation/extract_taxonomy.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/product_recommendation/neo4j.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/product_recommendation/parse_json.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/product_recommendation/taxonomy.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/simple_vector_index/chunk.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/simple_vector_index/cover.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/simple_vector_index/embed.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/examples/simple_vector_index/flow.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/favicon.ico +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/icon.svg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/img/incremental-etl.gif +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/static/robots.txt +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/docs/tsconfig.json +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/amazon_s3_embedding/.env.example +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/amazon_s3_embedding/.gitignore +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/amazon_s3_embedding/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/amazon_s3_embedding/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/azure_blob_embedding/.env.example +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/azure_blob_embedding/.gitignore +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/azure_blob_embedding/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/azure_blob_embedding/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/code_embedding/.env +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/code_embedding/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/code_embedding/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/custom_output_files/.env +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/custom_output_files/.gitignore +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/custom_output_files/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/custom_output_files/data/bizarre_animals.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/custom_output_files/data/chunk_norris.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/custom_output_files/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/docs_to_knowledge_graph/.env +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/docs_to_knowledge_graph/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/docs_to_knowledge_graph/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/face_recognition/.env +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/face_recognition/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/face_recognition/images/Carter_welcomes_Reagan.jpg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/face_recognition/images/Solvay_conference_1927.jpg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/face_recognition/images/Steve_Jobs_and_Bill_Gates_(522695099).jpg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/face_recognition/images/einplanck3.jpg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/face_recognition/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/fastapi_server_docker/.dockerignore +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/fastapi_server_docker/.env +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/fastapi_server_docker/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/fastapi_server_docker/compose.yaml +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/fastapi_server_docker/dockerfile +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/fastapi_server_docker/files/1810.04805v2.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/fastapi_server_docker/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/gdrive_text_embedding/.env.example +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/gdrive_text_embedding/.gitignore +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/gdrive_text_embedding/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/gdrive_text_embedding/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/.env +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/colpali_main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/frontend/.gitignore +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/frontend/index.html +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/frontend/package-lock.json +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/frontend/package.json +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/frontend/src/App.jsx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/frontend/src/main.jsx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/frontend/src/style.css +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/frontend/vite.config.js +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/img/cat1.jpeg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/img/dog1.jpeg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/img/elephant1.jpg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/img/giraffe.jpg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/image_search/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/live_updates/.env +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/live_updates/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/live_updates/data/bizarre_animals.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/live_updates/data/chunk_norris.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/live_updates/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/manuals_llm_extraction/.env +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/manuals_llm_extraction/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/manuals_llm_extraction/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/manuals_llm_extraction/manuals/array.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/manuals_llm_extraction/manuals/base64.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/manuals_llm_extraction/manuals/copy.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/manuals_llm_extraction/manuals/glob.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/multi_format_indexing/.env +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/multi_format_indexing/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/multi_format_indexing/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/multi_format_indexing/source_files/1706.03762v7.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/multi_format_indexing/source_files/1810.04805v2.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/multi_format_indexing/source_files/2502.06786v3.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/multi_format_indexing/source_files/healthcare_industry_test_p101.jpg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/multi_format_indexing/source_files/healthcare_industry_test_p86.jpg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/multi_format_indexing/source_files/healthcare_industry_test_p9.jpg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/multi_format_indexing/source_files/restaurant_brands_international_2023.jpg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/multi_format_indexing/source_files/sweetgreen_2023.jpg +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/paper_metadata/.env.example +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/paper_metadata/.gitignore +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/paper_metadata/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/paper_metadata/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/paper_metadata/papers/1706.03762v7.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/paper_metadata/papers/1810.04805v2.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/paper_metadata/papers/2502.06786v3.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/paper_metadata/papers/2502.20346v1.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/patient_intake_extraction/.env.example +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/patient_intake_extraction/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/patient_intake_extraction/data/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_David_Artificial.docx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_Emily_Artificial.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_Joe_Artificial.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_From_Jane_Artificial.docx +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/patient_intake_extraction/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/pdf_embedding/.env +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/pdf_embedding/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/pdf_embedding/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/pdf_embedding/pdf_files/1706.03762v7.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/pdf_embedding/pdf_files/1810.04805v2.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/pdf_embedding/pdf_files/rfc8259.pdf +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/postgres_source/.env +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/.env.example +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/img/cocoinsight.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/img/neo4j.png +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/products/p1.json +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/products/p2.json +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/products/p3.json +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/products/p4.json +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/products/p5.json +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/products/p6.json +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/products/p7.json +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/products/p8.json +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/product_recommendation/products/p9.json +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/text_embedding/.env +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/text_embedding/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/text_embedding/Text_Embedding.ipynb +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/text_embedding/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/text_embedding/markdown_files/1706.03762v7.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/text_embedding/markdown_files/1810.04805v2.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/text_embedding/markdown_files/rfc8259.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/text_embedding_qdrant/.env +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/text_embedding_qdrant/README.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/text_embedding_qdrant/main.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/examples/text_embedding_qdrant/markdown_files/rfc8259.md +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/pyproject.toml +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/__init__.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/auth_registry.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/cli.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/convert.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/functions.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/index.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/lib.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/llm.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/op.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/py.typed +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/runtime.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/setting.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/setup.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/sources.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/subprocess_exec.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/targets.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/tests/__init__.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/tests/test_convert.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/tests/test_optional_database.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/tests/test_typing.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/tests/test_validation.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/typing.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/user_app_loader.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/utils.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/python/cocoindex/validation.py +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/ruff.toml +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/base/duration.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/base/field_attrs.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/base/json_schema.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/base/mod.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/base/schema.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/base/spec.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/base/value.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/builder/analyzed_flow.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/builder/analyzer.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/builder/exec_ctx.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/builder/flow_builder.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/builder/mod.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/builder/plan.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/execution/db_tracking.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/execution/db_tracking_setup.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/execution/dumper.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/execution/evaluator.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/execution/indexing_status.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/execution/live_updater.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/execution/memoization.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/execution/mod.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/execution/row_indexer.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/execution/source_indexer.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/execution/stats.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/lib.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/lib_context.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/llm/anthropic.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/llm/gemini.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/llm/litellm.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/llm/mod.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/llm/ollama.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/llm/openai.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/llm/openrouter.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/llm/vllm.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/llm/voyage.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/factory_bases.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/functions/embed_text.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/functions/extract_by_llm.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/functions/mod.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/functions/parse_json.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/functions/split_recursively.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/functions/test_utils.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/interface.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/mod.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/py_factory.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/registration.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/registry.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/sdk.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/shared/mod.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/shared/postgres.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/sources/amazon_s3.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/sources/azure_blob.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/sources/google_drive.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/sources/local_file.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/sources/mod.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/sources/postgres.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/sources/shared/mod.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/sources/shared/pattern_matcher.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/targets/kuzu.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/targets/mod.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/targets/neo4j.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/targets/qdrant.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/targets/shared/mod.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/targets/shared/property_graph.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/ops/targets/shared/table_columns.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/prelude.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/py/convert.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/py/mod.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/server.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/service/error.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/service/flows.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/service/mod.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/settings.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/setup/auth_registry.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/setup/components.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/setup/db_metadata.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/setup/driver.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/setup/flow_features.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/setup/mod.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/setup/states.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/utils/concur_control.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/utils/db.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/utils/fingerprint.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/utils/immutable.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/utils/retryable.rs +0 -0
- {cocoindex-0.2.1 → cocoindex-0.2.2}/src/utils/yaml_ser.rs +0 -0
@@ -2,7 +2,7 @@
|
|
2
2
|
name = "cocoindex"
|
3
3
|
# Version used for local development is always higher than others to take precedence.
|
4
4
|
# Will be overridden for specific release versions.
|
5
|
-
version = "0.2.
|
5
|
+
version = "0.2.2"
|
6
6
|
edition = "2024"
|
7
7
|
rust-version = "1.88"
|
8
8
|
readme = "README.md"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: cocoindex
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.2
|
4
4
|
Requires-Dist: click>=8.1.8
|
5
5
|
Requires-Dist: rich>=14.0.0
|
6
6
|
Requires-Dist: python-dotenv>=1.1.0
|
@@ -84,7 +84,7 @@ CocoIndex makes it effortless to transform data with AI, and keep source data an
|
|
84
84
|
</br>
|
85
85
|
|
86
86
|
<p align="center">
|
87
|
-
<img
|
87
|
+
<img alt="CocoIndex Features" src="https://cocoindex.io/images/venn2.svg" />
|
88
88
|
</p>
|
89
89
|
|
90
90
|
</br>
|
@@ -55,7 +55,7 @@ CocoIndex makes it effortless to transform data with AI, and keep source data an
|
|
55
55
|
</br>
|
56
56
|
|
57
57
|
<p align="center">
|
58
|
-
<img
|
58
|
+
<img alt="CocoIndex Features" src="https://cocoindex.io/images/venn2.svg" />
|
59
59
|
</p>
|
60
60
|
|
61
61
|
</br>
|
@@ -12,7 +12,9 @@ tags: [vector-index, metadata]
|
|
12
12
|
|
13
13
|
import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/components/GitHubButton';
|
14
14
|
|
15
|
-
<GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/paper_metadata"/>
|
15
|
+
<GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/paper_metadata" margin="0 0 24px 0" />
|
16
|
+
|
17
|
+

|
16
18
|
|
17
19
|
## What we will achieve
|
18
20
|
|
@@ -45,7 +47,7 @@ to answer questions like "Give me all the papers by Jeff Dean."
|
|
45
47
|
CocoIndex uses PostgreSQL internally for incremental processing.
|
46
48
|
- [Configure your OpenAI API key](https://cocoindex.io/docs/ai/llm#openai). Alternatively, we have native support for Gemini, Ollama, LiteLLM. You can choose your favorite LLM provider and work completely on-premises.
|
47
49
|
|
48
|
-
<DocumentationButton
|
50
|
+
<DocumentationButton url="https://cocoindex.io/docs/ai/llm" text="LLM" margin="0 0 16px 0" />
|
49
51
|
|
50
52
|
## Import the Papers
|
51
53
|
|
@@ -61,7 +63,7 @@ def paper_metadata_flow(
|
|
61
63
|
```
|
62
64
|
|
63
65
|
`flow_builder.add_source` will create a table with sub fields (`filename`, `content`).
|
64
|
-
<DocumentationButton
|
66
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
|
65
67
|
|
66
68
|
## Extract and collect metadata
|
67
69
|
|
@@ -321,7 +323,7 @@ metadata_embeddings.export(
|
|
321
323
|
|
322
324
|
In this example we use PGVector as embedding store. With CocoIndex, you can do one line switch on other supported Vector databases.
|
323
325
|
|
324
|
-
<DocumentationButton
|
326
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/targets#entry-oriented-targets" text="Entry Oriented Targets" margin="0 0 16px 0" />
|
325
327
|
|
326
328
|
## Query the index
|
327
329
|
|
@@ -12,23 +12,23 @@ tags: [vector-index, codebase]
|
|
12
12
|
|
13
13
|
import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/components/GitHubButton';
|
14
14
|
|
15
|
-
<GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/code_embedding"/>
|
16
|
-
<YouTubeButton url="https://youtu.be/G3WstvhHO24?si=ndYfM0XRs03_hVPR" />
|
15
|
+
<GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/code_embedding" margin="0 0 24px 0" />
|
16
|
+
<YouTubeButton url="https://youtu.be/G3WstvhHO24?si=ndYfM0XRs03_hVPR" margin="0 0 24px 0" />
|
17
|
+
|
18
|
+

|
17
19
|
|
18
20
|
## Overview
|
19
21
|
In this tutorial, we will build codebase index. [CocoIndex](https://github.com/cocoindex-io/cocoindex) provides built-in support for codebase chunking, with native Tree-sitter support. It works with large codebases, and can be updated in near real-time with incremental processing - only reprocess what's changed.
|
20
22
|
|
21
23
|
## Use Cases
|
22
|
-
A wide range of applications can be built with an effective codebase index that is always up-to-date.
|
23
|
-
|
24
|
-

|
24
|
+
A wide range of applications can be built with an effective codebase index that is always up-to-date.
|
25
25
|
|
26
26
|
- Semantic code context for AI coding agents like Claude, Codex, Gemini CLI.
|
27
27
|
- MCP for code editors such as Cursor, Windsurf, and VSCode.
|
28
28
|
- Context-aware code search applications—semantic code search, natural language code retrieval.
|
29
29
|
- Context for code review agents—AI code review, automated code analysis, code quality checks, pull request summarization.
|
30
30
|
- Automated code refactoring, large-scale code migration.
|
31
|
-
-
|
31
|
+
- SRE workflows: enable rapid root cause analysis, incident response, and change impact assessment by indexing infrastructure-as-code, deployment scripts, and config files for semantic search and lineage tracking.
|
32
32
|
- Automatically generate design documentation from code—keep design docs up-to-date.
|
33
33
|
|
34
34
|
## Flow Overview
|
@@ -67,7 +67,7 @@ def code_embedding_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoind
|
|
67
67
|
- Exclude files and directories starting `.`, `target` in the root and `node_modules` under any directory.
|
68
68
|
|
69
69
|
`flow_builder.add_source` will create a table with sub fields (`filename`, `content`).
|
70
|
-
<DocumentationButton
|
70
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" />
|
71
71
|
|
72
72
|
|
73
73
|
## Process each file and collect the information
|
@@ -84,7 +84,7 @@ def extract_extension(filename: str) -> str:
|
|
84
84
|
return os.path.splitext(filename)[1]
|
85
85
|
```
|
86
86
|
|
87
|
-
<DocumentationButton
|
87
|
+
<DocumentationButton url="https://cocoindex.io/docs/custom_ops/custom_functions" text="Custom Function" margin="0 0 16px 0" />
|
88
88
|
|
89
89
|
### Split the file into chunks
|
90
90
|
We use the `SplitRecursively` function to split the file into chunks. `SplitRecursively` is CocoIndex building block, with native integration with Tree-sitter. You need to pass in the language to the `language` parameter if you are processing code.
|
@@ -97,7 +97,7 @@ with data_scope["files"].row() as file:
|
|
97
97
|
cocoindex.functions.SplitRecursively(),
|
98
98
|
language=file["extension"], chunk_size=1000, chunk_overlap=300)
|
99
99
|
```
|
100
|
-
<DocumentationButton
|
100
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/functions#splitrecursively" text="SplitRecursively" margin="0 0 16px 0" />
|
101
101
|
|
102
102
|

|
103
103
|
|
@@ -112,13 +112,13 @@ def code_to_embedding(text: cocoindex.DataSlice[str]) -> cocoindex.DataSlice[lis
|
|
112
112
|
model="sentence-transformers/all-MiniLM-L6-v2"))
|
113
113
|
```
|
114
114
|
|
115
|
-
<DocumentationButton
|
115
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/functions#sentencetransformerembed" text="SentenceTransformerEmbed" margin="0 0 16px 0" />
|
116
116
|
|
117
117
|
:::tip
|
118
118
|
`@cocoindex.transform_flow()` is needed to share the transformation across indexing and query. When building a vector index and querying against it, the embedding computation must remain consistent between indexing and querying.
|
119
119
|
:::
|
120
120
|
|
121
|
-
<DocumentationButton
|
121
|
+
<DocumentationButton url="https://cocoindex.io/docs/query#transform-flow" text="Transform Flow" margin="0 0 16px 0" />
|
122
122
|
|
123
123
|
Then for each chunk, we will embed it using the `code_to_embedding` function, and collect the embeddings to the `code_embeddings` collector.
|
124
124
|
|
@@ -222,4 +222,11 @@ To spin up, it is super easy.
|
|
222
222
|
```
|
223
223
|
cocoindex server main.py -ci
|
224
224
|
```
|
225
|
-
Follow the url from the terminal - `https://cocoindex.io/cocoinsight` to access the CocoInsight.
|
225
|
+
Follow the url from the terminal - `https://cocoindex.io/cocoinsight` to access the CocoInsight.
|
226
|
+
|
227
|
+
|
228
|
+
## Supported Languages
|
229
|
+
|
230
|
+
SplitRecursively has native support for all major programming languages.
|
231
|
+
|
232
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/functions#supported-languages" text="Supported Languages" margin="0 0 16px 0" />
|
@@ -11,7 +11,9 @@ tags: [custom-building-blocks]
|
|
11
11
|
---
|
12
12
|
import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/components/GitHubButton';
|
13
13
|
|
14
|
-
<GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/custom_output_files"/>
|
14
|
+
<GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/custom_output_files" margin="0 0 24px 0" />
|
15
|
+
|
16
|
+

|
15
17
|
|
16
18
|
## Overview
|
17
19
|
|
@@ -33,7 +35,7 @@ flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.DataScope
|
|
33
35
|
)
|
34
36
|
```
|
35
37
|
This ingestion creates a table with `filename` and `content` fields.
|
36
|
-
<DocumentationButton
|
38
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" />
|
37
39
|
|
38
40
|
## Process each file and collect
|
39
41
|
|
@@ -45,7 +47,7 @@ def markdown_to_html(text: str) -> str:
|
|
45
47
|
return _markdown_it.render(text)
|
46
48
|
```
|
47
49
|
|
48
|
-
<DocumentationButton
|
50
|
+
<DocumentationButton url="https://cocoindex.io/docs/custom_ops/custom_functions" text="Custom Function" margin="0 0 16px 0" />
|
49
51
|
|
50
52
|
Define data collector and transform each document to html.
|
51
53
|
|
@@ -62,7 +64,7 @@ with data_scope["documents"].row() as doc:
|
|
62
64
|
|
63
65
|
### Define the target spec
|
64
66
|
|
65
|
-
<DocumentationButton
|
67
|
+
<DocumentationButton url="https://cocoindex.io/docs/custom_ops/custom_targets#target-spec" text="Target Spec" margin="0 0 16px 0" />
|
66
68
|
|
67
69
|
The target spec contains a directory for output files:
|
68
70
|
|
@@ -74,7 +76,7 @@ class LocalFileTarget(cocoindex.op.TargetSpec):
|
|
74
76
|
|
75
77
|
### Implement the connector
|
76
78
|
|
77
|
-
<DocumentationButton
|
79
|
+
<DocumentationButton url="https://cocoindex.io/docs/custom_ops/custom_targets#target-connector" text="Target Connector" margin="0 0 16px 0" />
|
78
80
|
|
79
81
|
`get_persistent_key()` defines the persistent key,
|
80
82
|
which uniquely identifies the target for change tracking and incremental updates. Here, we simply use the target directory as the key (e.g., `./data/output`).
|
@@ -12,8 +12,10 @@ tags: [knowledge-graph, structured-data-extraction]
|
|
12
12
|
|
13
13
|
import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/components/GitHubButton';
|
14
14
|
|
15
|
-
<GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/docs_to_knowledge_graph"/>
|
16
|
-
<YouTubeButton url="https://youtu.be/2KVkpUGRtnk?si=MRalDweWrid-IFje" />
|
15
|
+
<GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/docs_to_knowledge_graph" margin="0 0 24px 0" />
|
16
|
+
<YouTubeButton url="https://youtu.be/2KVkpUGRtnk?si=MRalDweWrid-IFje" margin="0 0 24px 0" />
|
17
|
+
|
18
|
+

|
17
19
|
|
18
20
|
## Overview
|
19
21
|
[CocoIndex](https://github.com/cocoindex-io/cocoindex) makes it easy to build and maintain knowledge graphs with continuous source updates. In this tutorial, we will use LLM to extract relationships between the concepts in each document, and generate two kinds of relationships:
|
@@ -37,11 +39,11 @@ and then build a knowledge graph.
|
|
37
39
|
* [Install Neo4j](https://cocoindex.io/docs/ops/targets#neo4j-dev-instance), a graph database.
|
38
40
|
* [Configure your OpenAI API key](https://cocoindex.io/docs/ai/llm#openai). Alternatively, we have native support for Gemini, Ollama, LiteLLM. You can choose your favorite LLM provider and work completely on-premises.
|
39
41
|
|
40
|
-
<DocumentationButton
|
42
|
+
<DocumentationButton url="https://cocoindex.io/docs/ai/llm" text="LLM" margin="0 0 16px 0" />
|
41
43
|
|
42
44
|
|
43
45
|
## Documentation
|
44
|
-
<DocumentationButton
|
46
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/targets#property-graph-targets" text="Property Graph Targets" margin="0 0 16px 0" />
|
45
47
|
|
46
48
|
|
47
49
|
## Data flow to build knowledge graph
|
@@ -61,7 +63,7 @@ def docs_to_kg_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.D
|
|
61
63
|
Here `flow_builder.add_source` creates a [KTable](https://cocoindex.io/docs/core/data_types#KTable).
|
62
64
|
`filename` is the key of the KTable.
|
63
65
|
|
64
|
-
<DocumentationButton
|
66
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
|
65
67
|
|
66
68
|
|
67
69
|
### Add data collectors
|
@@ -366,7 +368,7 @@ MATCH p=()-->() RETURN p
|
|
366
368
|
## Kuzu
|
367
369
|
Cocoindex natively supports Kuzu - a high performant, embedded open source graph database.
|
368
370
|
|
369
|
-
<DocumentationButton
|
371
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/targets#kuzu" text="Kuzu" margin="0 0 16px 0" />
|
370
372
|
|
371
373
|
The GraphDB interface in CocoIndex is standardized, you just need to **switch the configuration** without any additional code changes. CocoIndex supports exporting to Kuzu through its API server. You can bring up a Kuzu API server locally by running:
|
372
374
|
|
@@ -0,0 +1,270 @@
|
|
1
|
+
---
|
2
|
+
title: Image Search App with ColPali and FastAPI
|
3
|
+
description: Build image search index with ColPali and FastAPI
|
4
|
+
sidebar_class_name: hidden
|
5
|
+
slug: /examples/image_search
|
6
|
+
canonicalUrl: '/examples/image_search'
|
7
|
+
sidebar_custom_props:
|
8
|
+
image: /img/examples/image_search/cover.png
|
9
|
+
tags: [vector-index, multi-modal]
|
10
|
+
tags: [vector-index, multi-modal]
|
11
|
+
---
|
12
|
+
|
13
|
+
import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/components/GitHubButton';
|
14
|
+
|
15
|
+
<GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/image_search" margin="0 0 24px 0" />
|
16
|
+
|
17
|
+

|
18
|
+
|
19
|
+
## Overview
|
20
|
+
CocoIndex supports native integration with ColPali - with just a few lines of code, you embed and index images with ColPali’s late-interaction architecture. We also build a light weight image search application with FastAPI.
|
21
|
+
|
22
|
+
|
23
|
+
## ColPali
|
24
|
+
|
25
|
+
**ColPali (Contextual Late-interaction over Patches)** is a powerful model for multimodal retrieval.
|
26
|
+
|
27
|
+
It fundamentally rethinks how documents—especially visually complex or image-rich ones—are represented and searched. Instead of reducing each image or page to a single dense vector (as in traditional bi-encoders), ColPali breaks an image into many smaller patches, preserving local spatial and semantic structure. Each patch receives its own embedding, which together form a multi-vector representation of the complete document.
|
28
|
+
|
29
|
+

|
30
|
+
|
31
|
+
|
32
|
+
## Flow Overview
|
33
|
+

|
34
|
+
|
35
|
+
1. Ingest image files from the local filesystem
|
36
|
+
2. Use **ColPali** to embed each image into patch-level multi-vectors
|
37
|
+
3. Optionally extract image captions using an LLM
|
38
|
+
4. Export the embeddings (and optional captions) to a Qdrant collection
|
39
|
+
|
40
|
+
## Setup
|
41
|
+
- [Install Postgres](https://cocoindex.io/docs/getting_started/installation#-install-postgres) if you don't have one.
|
42
|
+
|
43
|
+
- Make sure Qdrant is running
|
44
|
+
```
|
45
|
+
docker run -d -p 6334:6334 -p 6333:6333 qdrant/qdrant
|
46
|
+
```
|
47
|
+
|
48
|
+
|
49
|
+
## Add Source
|
50
|
+
|
51
|
+
We start by defining a flow to read `.jpg`, `.jpeg`, and `.png` files from a local directory using `LocalFile`.
|
52
|
+
|
53
|
+
```python
|
54
|
+
@cocoindex.flow_def(name="ImageObjectEmbeddingColpali")
|
55
|
+
def image_object_embedding_flow(flow_builder, data_scope):
|
56
|
+
data_scope["images"] = flow_builder.add_source(
|
57
|
+
cocoindex.sources.LocalFile(
|
58
|
+
path="img",
|
59
|
+
included_patterns=["*.jpg", "*.jpeg", "*.png"],
|
60
|
+
binary=True
|
61
|
+
),
|
62
|
+
refresh_interval=datetime.timedelta(minutes=1),
|
63
|
+
)
|
64
|
+
```
|
65
|
+
|
66
|
+
The `add_source` function sets up a table with fields like `filename` and `content`. Images are automatically re-scanned every minute.
|
67
|
+
|
68
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/sources#localfile" text="LocalFile" />
|
69
|
+
|
70
|
+
|
71
|
+
## Process Each Image and Collect the Embedding
|
72
|
+
|
73
|
+
We use CocoIndex's built-in `ColPaliEmbedImage` function, which returns a **multi-vector representation** for each image. Each patch receives its own vector, preserving spatial and semantic information.
|
74
|
+
|
75
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/functions#colpaliembedimage" text="ColPaliEmbedImage" margin="0 0 16px 0" />
|
76
|
+
|
77
|
+
```python
|
78
|
+
img_embeddings = data_scope.add_collector()
|
79
|
+
with data_scope["images"].row() as img:
|
80
|
+
img["embedding"] = img["content"].transform(cocoindex.functions.ColPaliEmbedImage(model="vidore/colpali-v1.2"))
|
81
|
+
collect_fields = {
|
82
|
+
"id": cocoindex.GeneratedField.UUID,
|
83
|
+
"filename": img["filename"],
|
84
|
+
"embedding": img["embedding"],
|
85
|
+
}
|
86
|
+
img_embeddings.collect(**collect_fields)
|
87
|
+
```
|
88
|
+
|
89
|
+
This transformation turns the raw image bytes into a list of vectors — one per patch — that can later be used for **late interaction search**. And then we collect the embeddings.
|
90
|
+
|
91
|
+

|
92
|
+
|
93
|
+
## Export the Embeddings
|
94
|
+
|
95
|
+
```python
|
96
|
+
img_embeddings.export(
|
97
|
+
"img_embeddings",
|
98
|
+
cocoindex.targets.Qdrant(collection_name="ImageSearchColpali"),
|
99
|
+
primary_key_fields=["id"],
|
100
|
+
)
|
101
|
+
```
|
102
|
+
|
103
|
+
This creates a vector collection in Qdrant that supports **multi-vector fields** — required for ColPali-style late interaction search.
|
104
|
+
|
105
|
+
|
106
|
+
## Enable Real-Time Indexing
|
107
|
+
|
108
|
+
To keep the image index up to date automatically, we wrap the flow in a `FlowLiveUpdater`:
|
109
|
+
|
110
|
+
```python
|
111
|
+
@asynccontextmanager
|
112
|
+
async def lifespan(app: FastAPI):
|
113
|
+
load_dotenv()
|
114
|
+
cocoindex.init()
|
115
|
+
image_object_embedding_flow.setup(report_to_stdout=True)
|
116
|
+
app.state.live_updater = cocoindex.FlowLiveUpdater(image_object_embedding_flow)
|
117
|
+
app.state.live_updater.start()
|
118
|
+
yield
|
119
|
+
```
|
120
|
+
|
121
|
+
This keeps your vector index fresh as new images arrive.
|
122
|
+
|
123
|
+
## Fast API Application
|
124
|
+
|
125
|
+
We build a simple FastAPI application to query the index.
|
126
|
+
|
127
|
+
```python
|
128
|
+
app = FastAPI(lifespan=lifespan)
|
129
|
+
|
130
|
+
app.add_middleware(
|
131
|
+
CORSMiddleware,
|
132
|
+
allow_origins=["*"],
|
133
|
+
allow_credentials=True,
|
134
|
+
allow_methods=["*"],
|
135
|
+
allow_headers=["*"],
|
136
|
+
)
|
137
|
+
# Serve images from the 'img' directory at /img
|
138
|
+
app.mount("/img", StaticFiles(directory="img"), name="img")
|
139
|
+
```
|
140
|
+
|
141
|
+
## Search API & Query the index
|
142
|
+
|
143
|
+
We use `ColPaliEmbedQuery` to embed the query text into a multi-vector format.
|
144
|
+
|
145
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/functions#colpaliembedquery" text="ColPaliEmbedQuery" margin="0 0 16px 0" />
|
146
|
+
|
147
|
+
```python
|
148
|
+
@cocoindex.transform_flow()
|
149
|
+
def text_to_colpali_embedding(
|
150
|
+
text: cocoindex.DataSlice[str],
|
151
|
+
) -> cocoindex.DataSlice[list[list[float]]]:
|
152
|
+
return text.transform(
|
153
|
+
cocoindex.functions.ColPaliEmbedQuery(model=COLPALI_MODEL_NAME)
|
154
|
+
)
|
155
|
+
```
|
156
|
+
Then we build a search API to query the index.
|
157
|
+
|
158
|
+
```python
|
159
|
+
# --- Search API ---
|
160
|
+
@app.get("/search")
|
161
|
+
def search(
|
162
|
+
q: str = Query(..., description="Search query"),
|
163
|
+
limit: int = Query(5, description="Number of results"),
|
164
|
+
) -> Any:
|
165
|
+
# Get the multi-vector embedding for the query
|
166
|
+
query_embedding = text_to_colpali_embedding.eval(q)
|
167
|
+
print(
|
168
|
+
f"🔍 Query multi-vector shape: {len(query_embedding)} tokens x {len(query_embedding[0]) if query_embedding else 0} dims"
|
169
|
+
)
|
170
|
+
|
171
|
+
# Search in Qdrant with multi-vector MaxSim scoring using query_points API
|
172
|
+
search_results = app.state.qdrant_client.query_points(
|
173
|
+
collection_name=QDRANT_COLLECTION,
|
174
|
+
query=query_embedding, # Multi-vector format: list[list[float]]
|
175
|
+
using="embedding", # Specify the vector field name
|
176
|
+
limit=limit,
|
177
|
+
with_payload=True,
|
178
|
+
)
|
179
|
+
|
180
|
+
print(f"📈 Found {len(search_results.points)} results with MaxSim scoring")
|
181
|
+
|
182
|
+
return {
|
183
|
+
"results": [
|
184
|
+
{
|
185
|
+
"filename": result.payload["filename"],
|
186
|
+
"score": result.score,
|
187
|
+
"caption": result.payload.get("caption"),
|
188
|
+
}
|
189
|
+
for result in search_results.points
|
190
|
+
]
|
191
|
+
}
|
192
|
+
```
|
193
|
+
|
194
|
+
## Run the application
|
195
|
+
|
196
|
+
- Install dependencies:
|
197
|
+
```
|
198
|
+
pip install -e .
|
199
|
+
pip install 'cocoindex[colpali]' # Adds ColPali support
|
200
|
+
```
|
201
|
+
|
202
|
+
- Configure model (optional):
|
203
|
+
```sh
|
204
|
+
# All ColVision models supported by colpali-engine are available
|
205
|
+
# See https://github.com/illuin-tech/colpali#list-of-colvision-models for the complete list
|
206
|
+
|
207
|
+
# ColPali models (colpali-*) - PaliGemma-based, best for general document retrieval
|
208
|
+
export COLPALI_MODEL="vidore/colpali-v1.2" # Default model
|
209
|
+
export COLPALI_MODEL="vidore/colpali-v1.3" # Latest version
|
210
|
+
|
211
|
+
# ColQwen2 models (colqwen-*) - Qwen2-VL-based, excellent for multilingual text (29+ languages) and general vision
|
212
|
+
export COLPALI_MODEL="vidore/colqwen2-v1.0"
|
213
|
+
export COLPALI_MODEL="vidore/colqwen2.5-v0.2" # Latest Qwen2.5 model
|
214
|
+
|
215
|
+
# ColSmol models (colsmol-*) - Lightweight, good for resource-constrained environments
|
216
|
+
export COLPALI_MODEL="vidore/colSmol-256M"
|
217
|
+
|
218
|
+
# Any other ColVision models from https://github.com/illuin-tech/colpali are supported
|
219
|
+
```
|
220
|
+
|
221
|
+
- Run ColPali Backend:
|
222
|
+
```
|
223
|
+
uvicorn colpali_main:app --reload --host 0.0.0.0 --port 8000
|
224
|
+
```
|
225
|
+
:::warning
|
226
|
+
Note that recent Nvidia GPUs (such as the RTX 5090) are not supported by the stable PyTorch version up to 2.7.1.
|
227
|
+
:::
|
228
|
+
|
229
|
+
If you get this error:
|
230
|
+
|
231
|
+
```
|
232
|
+
The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_61 sm_70 sm_75 sm_80 sm_86 sm_90 compute_37.
|
233
|
+
```
|
234
|
+
|
235
|
+
You can install the nightly pytorch build here: https://pytorch.org/get-started/locally/
|
236
|
+
|
237
|
+
```sh
|
238
|
+
pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu129
|
239
|
+
```
|
240
|
+
- Run Frontend:
|
241
|
+
```
|
242
|
+
cd frontend
|
243
|
+
npm install
|
244
|
+
npm run dev
|
245
|
+
```
|
246
|
+
|
247
|
+
Go to `http://localhost:5173` to search. The frontend works with both backends identically.
|
248
|
+
|
249
|
+

|
250
|
+
|
251
|
+
## CLIP Model & Comparison with ColPali
|
252
|
+
We've also had a similar application built with CLIP model.
|
253
|
+
|
254
|
+
<DocumentationButton url="https://cocoindex.io/blogs/live-image-search" text="Image Search App with CLIP" margin="0 0 16px 0" />
|
255
|
+
|
256
|
+
In general,
|
257
|
+
- CLIP: Faster, good for general image-text matching
|
258
|
+
- ColPali: More accurate for document images and text-heavy content, supports multi-vector late interaction for better precision
|
259
|
+
|
260
|
+
## Connect to Any Data Source
|
261
|
+
|
262
|
+
One of CocoIndex’s core strengths is its ability to connect to your existing data sources and automatically keep your index fresh. Beyond local files, CocoIndex natively supports source connectors including:
|
263
|
+
|
264
|
+
- Google Drive
|
265
|
+
- Amazon S3 / SQS
|
266
|
+
- Azure Blob Storage
|
267
|
+
|
268
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
|
269
|
+
|
270
|
+
Once connected, CocoIndex continuously watches for changes — new uploads, updates, or deletions — and applies them to your index in real time.
|
@@ -12,7 +12,9 @@ tags: [structured-data-extraction, data-mapping]
|
|
12
12
|
|
13
13
|
import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/components/GitHubButton';
|
14
14
|
|
15
|
-
<GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/manuals_llm_extraction"/>
|
15
|
+
<GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/manuals_llm_extraction" margin="0 0 24px 0" />
|
16
|
+
|
17
|
+

|
16
18
|
|
17
19
|
## Overview
|
18
20
|
This example shows how to extract structured data from Python Manuals using Ollama.
|
@@ -36,11 +38,11 @@ This example shows how to extract structured data from Python Manuals using Olla
|
|
36
38
|
ollama pull llama3.2
|
37
39
|
```
|
38
40
|
|
39
|
-
<DocumentationButton
|
41
|
+
<DocumentationButton url="https://cocoindex.io/docs/ai/llm#ollama" text="Ollama" margin="0 0 16px 0" />
|
40
42
|
|
41
43
|
Alternatively, CocoIndex have native support for Gemini, Ollama, LiteLLM. You can choose your favorite LLM provider and work completely on-premises.
|
42
44
|
|
43
|
-
<DocumentationButton
|
45
|
+
<DocumentationButton url="https://cocoindex.io/docs/ai/llm" text="LLM" margin="0 0 16px 0" />
|
44
46
|
|
45
47
|
## Add Source
|
46
48
|
Let's add Python docs as a source.
|
@@ -64,7 +66,7 @@ def manual_extraction_flow(
|
|
64
66
|
- `filename` (key, type: `str`): the filename of the file, e.g. `dir1/file1.md`
|
65
67
|
- `content` (type: `str` if `binary` is `False`, otherwise `bytes`): the content of the file
|
66
68
|
|
67
|
-
<DocumentationButton
|
69
|
+
<DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="LocalFile" margin="0 0 16px 0" />
|
68
70
|
|
69
71
|
## Parse Markdown
|
70
72
|
|
@@ -97,7 +99,7 @@ class PdfToMarkdownExecutor:
|
|
97
99
|
```
|
98
100
|
You may wonder why we want to define a spec + executor (instead of using a standalone function) here. The main reason is there're some heavy preparation work (initialize the parser) needs to be done before being ready to process real data.
|
99
101
|
|
100
|
-
<DocumentationButton
|
102
|
+
<DocumentationButton url="https://cocoindex.io/docs/custom_ops/custom_functions" text="Custom Function" margin="0 0 16px 0" />
|
101
103
|
|
102
104
|
Plug in the function to the flow.
|
103
105
|
|
@@ -160,7 +162,7 @@ with data_scope["documents"].row() as doc:
|
|
160
162
|
instruction="Please extract Python module information from the manual."))
|
161
163
|
```
|
162
164
|
|
163
|
-
<DocumentationButton
|
165
|
+
<DocumentationButton url="https://cocoindex.io/docs/core/functions#extractbyllm" text="ExtractByLlm" margin="0 0 16px 0" />
|
164
166
|
|
165
167
|

|
166
168
|
|
@@ -194,7 +196,7 @@ with data_scope["documents"].row() as doc:
|
|
194
196
|
doc["module_summary"] = doc["module_info"].transform(summarize_module)
|
195
197
|
```
|
196
198
|
|
197
|
-
<DocumentationButton
|
199
|
+
<DocumentationButton url="https://cocoindex.io/docs/custom_ops/custom_functions" text="Custom Function" margin="0 0 16px 0" />
|
198
200
|
|
199
201
|

|
200
202
|
|