cocoindex 0.2.10__tar.gz → 0.2.12__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.
Files changed (426) hide show
  1. {cocoindex-0.2.10 → cocoindex-0.2.12}/.github/workflows/_docs_release.yml +4 -0
  2. {cocoindex-0.2.10 → cocoindex-0.2.12}/.github/workflows/_test.yml +3 -0
  3. {cocoindex-0.2.10 → cocoindex-0.2.12}/.github/workflows/docs_release.yml +1 -0
  4. {cocoindex-0.2.10 → cocoindex-0.2.12}/.github/workflows/docs_test.yml +3 -0
  5. {cocoindex-0.2.10 → cocoindex-0.2.12}/.github/workflows/release.yml +1 -0
  6. {cocoindex-0.2.10 → cocoindex-0.2.12}/.gitignore +3 -0
  7. {cocoindex-0.2.10 → cocoindex-0.2.12}/.pre-commit-config.yaml +1 -1
  8. {cocoindex-0.2.10 → cocoindex-0.2.12}/Cargo.lock +1 -1
  9. {cocoindex-0.2.10 → cocoindex-0.2.12}/Cargo.toml +2 -2
  10. {cocoindex-0.2.10 → cocoindex-0.2.12}/PKG-INFO +4 -1
  11. {cocoindex-0.2.10 → cocoindex-0.2.12}/THIRD_PARTY_NOTICES.html +1 -1
  12. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/contributing/guide.md +1 -1
  13. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/contributing/setup_dev_environment.md +1 -1
  14. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/examples/examples/academic_papers_index.md +12 -11
  15. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/examples/examples/codebase_index.md +9 -8
  16. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/examples/examples/custom_targets.md +10 -11
  17. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/examples/examples/docs_to_knowledge_graph.md +11 -11
  18. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/examples/examples/document_ai.md +2 -1
  19. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/examples/examples/image_search.md +2 -1
  20. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/examples/examples/manual_extraction.md +2 -2
  21. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/examples/examples/multi_format_index.md +8 -9
  22. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/examples/examples/patient_form_extraction.md +7 -6
  23. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/examples/examples/photo_search.md +6 -5
  24. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/examples/examples/postgres_source.md +17 -16
  25. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/examples/examples/product_recommendation.md +17 -17
  26. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/examples/examples/simple_vector_index.md +7 -6
  27. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/examples/index.md +2 -2
  28. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/getting_started/quickstart.md +4 -4
  29. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/ops/targets.md +78 -0
  30. cocoindex-0.2.12/docs/docs/query.mdx +213 -0
  31. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docusaurus.config.ts +1 -1
  32. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/src/theme/DocCard/index.tsx +3 -3
  33. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/src/theme/DocCard/styles.module.css +4 -4
  34. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/src/theme/DocCardList/index.tsx +1 -1
  35. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/src/theme/DocCardList/styles.module.css +7 -7
  36. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/yarn.lock +1808 -1766
  37. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/code_embedding/main.py +41 -18
  38. cocoindex-0.2.12/examples/image_search/frontend/package-lock.json +1731 -0
  39. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/frontend/package.json +2 -2
  40. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/postgres_source/.env +1 -1
  41. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/text_embedding/main.py +32 -8
  42. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/text_embedding_qdrant/main.py +45 -18
  43. {cocoindex-0.2.10 → cocoindex-0.2.12}/pyproject.toml +2 -1
  44. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/__init__.py +5 -0
  45. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/auth_registry.py +8 -15
  46. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/convert.py +185 -27
  47. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/flow.py +83 -20
  48. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/op.py +168 -52
  49. cocoindex-0.2.12/python/cocoindex/query_handler.py +51 -0
  50. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/runtime.py +8 -1
  51. cocoindex-0.2.12/python/cocoindex/targets/__init__.py +5 -0
  52. cocoindex-0.2.10/python/cocoindex/targets.py → cocoindex-0.2.12/python/cocoindex/targets/_engine_builtin_specs.py +4 -4
  53. cocoindex-0.2.12/python/cocoindex/targets/lancedb.py +460 -0
  54. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/tests/test_convert.py +51 -26
  55. cocoindex-0.2.12/python/cocoindex/tests/test_load_convert.py +118 -0
  56. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/tests/test_typing.py +126 -2
  57. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/typing.py +207 -0
  58. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/base/json_schema.rs +1 -1
  59. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/base/spec.rs +9 -22
  60. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/builder/analyzer.rs +12 -4
  61. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/builder/exec_ctx.rs +16 -9
  62. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/builder/plan.rs +1 -1
  63. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/execution/db_tracking.rs +24 -0
  64. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/execution/row_indexer.rs +11 -4
  65. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/execution/source_indexer.rs +23 -2
  66. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/lib_context.rs +8 -2
  67. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/factory_bases.rs +1 -1
  68. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/interface.rs +2 -2
  69. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/py_factory.rs +70 -32
  70. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/targets/postgres.rs +2 -2
  71. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/targets/qdrant.rs +0 -14
  72. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/targets/shared/property_graph.rs +3 -3
  73. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/py/mod.rs +82 -2
  74. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/server.rs +4 -0
  75. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/service/flows.rs +49 -10
  76. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/service/mod.rs +1 -0
  77. cocoindex-0.2.12/src/service/query_handler.rs +42 -0
  78. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/setup/auth_registry.rs +17 -0
  79. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/setup/states.rs +2 -0
  80. cocoindex-0.2.10/docs/docs/query.mdx +0 -101
  81. cocoindex-0.2.10/examples/image_search/frontend/package-lock.json +0 -1265
  82. {cocoindex-0.2.10 → cocoindex-0.2.12}/.cargo/config.toml +0 -0
  83. {cocoindex-0.2.10 → cocoindex-0.2.12}/.env.lib_debug +0 -0
  84. {cocoindex-0.2.10 → cocoindex-0.2.12}/.github/ISSUE_TEMPLATE//360/237/220/233-bug-report.md" +0 -0
  85. {cocoindex-0.2.10 → cocoindex-0.2.12}/.github/ISSUE_TEMPLATE//360/237/222/241-feature-request.md" +0 -0
  86. {cocoindex-0.2.10 → cocoindex-0.2.12}/.github/scripts/update_version.sh +0 -0
  87. {cocoindex-0.2.10 → cocoindex-0.2.12}/.github/workflows/CI.yml +0 -0
  88. {cocoindex-0.2.10 → cocoindex-0.2.12}/.github/workflows/format.yml +0 -0
  89. {cocoindex-0.2.10 → cocoindex-0.2.12}/CODE_OF_CONDUCT.md +0 -0
  90. {cocoindex-0.2.10 → cocoindex-0.2.12}/CONTRIBUTING.md +0 -0
  91. {cocoindex-0.2.10 → cocoindex-0.2.12}/LICENSE +0 -0
  92. {cocoindex-0.2.10 → cocoindex-0.2.12}/README.md +0 -0
  93. {cocoindex-0.2.10 → cocoindex-0.2.12}/about.hbs +0 -0
  94. {cocoindex-0.2.10 → cocoindex-0.2.12}/about.toml +0 -0
  95. {cocoindex-0.2.10 → cocoindex-0.2.12}/dev/neo4j.yaml +0 -0
  96. {cocoindex-0.2.10 → cocoindex-0.2.12}/dev/postgres.yaml +0 -0
  97. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/.gitignore +0 -0
  98. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/README.md +0 -0
  99. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/about/community.md +0 -0
  100. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/ai/llm.mdx +0 -0
  101. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/contributing/new_built_in_target.mdx +0 -0
  102. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/core/basics.md +0 -0
  103. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/core/cli.mdx +0 -0
  104. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/core/data_example.svg +0 -0
  105. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/core/data_types.mdx +0 -0
  106. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/core/flow_def.mdx +0 -0
  107. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/core/flow_example.svg +0 -0
  108. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/core/flow_methods.mdx +0 -0
  109. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/core/settings.mdx +0 -0
  110. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/custom_ops/custom_functions.mdx +0 -0
  111. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/custom_ops/custom_targets.mdx +0 -0
  112. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/getting_started/installation.md +0 -0
  113. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/getting_started/markdown_files.zip +0 -0
  114. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/getting_started/overview.md +0 -0
  115. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/ops/functions.md +0 -0
  116. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/ops/sources.md +0 -0
  117. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/tutorials/live_updates.md +0 -0
  118. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/docs/tutorials/manage_flow_dynamically.mdx +0 -0
  119. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/package.json +0 -0
  120. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/sidebars.ts +0 -0
  121. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/src/components/GitHubButton/index.tsx +0 -0
  122. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/src/css/custom.css +0 -0
  123. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/src/theme/Root.js +0 -0
  124. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/.nojekyll +0 -0
  125. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/docusaurus.png +0 -0
  126. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/academic_papers_index/abstract_chunks.png +0 -0
  127. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/academic_papers_index/basic_info.png +0 -0
  128. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/academic_papers_index/chunk_embedding.png +0 -0
  129. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/academic_papers_index/cover.png +0 -0
  130. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/academic_papers_index/first_page.png +0 -0
  131. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/academic_papers_index/flow.png +0 -0
  132. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/academic_papers_index/metadata.png +0 -0
  133. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/codebase_index/chunk.png +0 -0
  134. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/codebase_index/cover.png +0 -0
  135. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/codebase_index/flow.png +0 -0
  136. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/custom_targets/convert.png +0 -0
  137. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/custom_targets/cover.png +0 -0
  138. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/docs_to_knowledge_graph/cover.png +0 -0
  139. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/docs_to_knowledge_graph/dedupe.png +0 -0
  140. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/docs_to_knowledge_graph/export_document.png +0 -0
  141. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/docs_to_knowledge_graph/export_relationship.png +0 -0
  142. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/docs_to_knowledge_graph/extract_relationship.png +0 -0
  143. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/docs_to_knowledge_graph/flow.png +0 -0
  144. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/docs_to_knowledge_graph/relationship.png +0 -0
  145. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/docs_to_knowledge_graph/summary.png +0 -0
  146. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/document_ai/cover.png +0 -0
  147. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/document_ai/document_ai.png +0 -0
  148. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/document_ai/processor.png +0 -0
  149. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/image_search/cover.png +0 -0
  150. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/image_search/embedding.png +0 -0
  151. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/image_search/flow.png +0 -0
  152. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/image_search/multi_modal_architecture.png +0 -0
  153. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/image_search/result.png +0 -0
  154. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/manual_extraction/cover.png +0 -0
  155. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/manual_extraction/extraction.png +0 -0
  156. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/manual_extraction/flow.png +0 -0
  157. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/manual_extraction/summary.png +0 -0
  158. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/multi_format_index/colpali_architecture.png +0 -0
  159. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/multi_format_index/cover.png +0 -0
  160. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/multi_format_index/embed.png +0 -0
  161. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/multi_format_index/flow.png +0 -0
  162. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/multi_format_index/pages.png +0 -0
  163. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/patient_form_extraction/cover.png +0 -0
  164. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/patient_form_extraction/extraction.png +0 -0
  165. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/patient_form_extraction/fields.png +0 -0
  166. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/patient_form_extraction/flow.png +0 -0
  167. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/patient_form_extraction/tomarkdown.png +0 -0
  168. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/photo_search/cover.png +0 -0
  169. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/photo_search/extraction.png +0 -0
  170. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/photo_search/flow.png +0 -0
  171. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/postgres_source/collector.png +0 -0
  172. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/postgres_source/cover.png +0 -0
  173. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/postgres_source/description.png +0 -0
  174. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/postgres_source/embed.png +0 -0
  175. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/postgres_source/flow.png +0 -0
  176. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/postgres_source/lineage.png +0 -0
  177. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/postgres_source/price.png +0 -0
  178. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/postgres_source/source.png +0 -0
  179. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/product_recommendation/cover.png +0 -0
  180. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/product_recommendation/dedupe.png +0 -0
  181. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/product_recommendation/export_all.png +0 -0
  182. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/product_recommendation/export_product.png +0 -0
  183. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/product_recommendation/export_taxonomy.png +0 -0
  184. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/product_recommendation/extract_product.png +0 -0
  185. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/product_recommendation/extract_taxonomy.png +0 -0
  186. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/product_recommendation/neo4j.png +0 -0
  187. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/product_recommendation/parse_json.png +0 -0
  188. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/product_recommendation/taxonomy.png +0 -0
  189. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/simple_vector_index/chunk.png +0 -0
  190. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/simple_vector_index/cover.png +0 -0
  191. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/simple_vector_index/embed.png +0 -0
  192. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/examples/simple_vector_index/flow.png +0 -0
  193. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/favicon.ico +0 -0
  194. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/icon.svg +0 -0
  195. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/img/incremental-etl.gif +0 -0
  196. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/static/robots.txt +0 -0
  197. {cocoindex-0.2.10 → cocoindex-0.2.12}/docs/tsconfig.json +0 -0
  198. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/amazon_s3_embedding/.env.example +0 -0
  199. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/amazon_s3_embedding/.gitignore +0 -0
  200. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/amazon_s3_embedding/README.md +0 -0
  201. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/amazon_s3_embedding/main.py +0 -0
  202. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/amazon_s3_embedding/pyproject.toml +0 -0
  203. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/azure_blob_embedding/.env.example +0 -0
  204. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/azure_blob_embedding/.gitignore +0 -0
  205. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/azure_blob_embedding/README.md +0 -0
  206. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/azure_blob_embedding/main.py +0 -0
  207. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/azure_blob_embedding/pyproject.toml +0 -0
  208. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/code_embedding/.env +0 -0
  209. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/code_embedding/README.md +0 -0
  210. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/code_embedding/pyproject.toml +0 -0
  211. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/custom_output_files/.env +0 -0
  212. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/custom_output_files/.gitignore +0 -0
  213. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/custom_output_files/README.md +0 -0
  214. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/custom_output_files/data/bizarre_animals.md +0 -0
  215. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/custom_output_files/data/chunk_norris.md +0 -0
  216. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/custom_output_files/main.py +0 -0
  217. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/custom_output_files/pyproject.toml +0 -0
  218. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/docs_to_knowledge_graph/.env +0 -0
  219. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/docs_to_knowledge_graph/README.md +0 -0
  220. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/docs_to_knowledge_graph/main.py +0 -0
  221. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/docs_to_knowledge_graph/pyproject.toml +0 -0
  222. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/face_recognition/.env +0 -0
  223. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/face_recognition/README.md +0 -0
  224. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/face_recognition/images/Carter_welcomes_Reagan.jpg +0 -0
  225. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/face_recognition/images/Solvay_conference_1927.jpg +0 -0
  226. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/face_recognition/images/Steve_Jobs_and_Bill_Gates_(522695099).jpg +0 -0
  227. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/face_recognition/images/einplanck3.jpg +0 -0
  228. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/face_recognition/main.py +0 -0
  229. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/face_recognition/pyproject.toml +0 -0
  230. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/fastapi_server_docker/.dockerignore +0 -0
  231. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/fastapi_server_docker/.env +0 -0
  232. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/fastapi_server_docker/README.md +0 -0
  233. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/fastapi_server_docker/compose.yaml +0 -0
  234. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/fastapi_server_docker/dockerfile +0 -0
  235. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/fastapi_server_docker/files/1810.04805v2.md +0 -0
  236. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/fastapi_server_docker/main.py +0 -0
  237. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/fastapi_server_docker/requirements.txt +0 -0
  238. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/gdrive_text_embedding/.env.example +0 -0
  239. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/gdrive_text_embedding/.gitignore +0 -0
  240. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/gdrive_text_embedding/README.md +0 -0
  241. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/gdrive_text_embedding/main.py +0 -0
  242. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/gdrive_text_embedding/pyproject.toml +0 -0
  243. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/.env +0 -0
  244. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/README.md +0 -0
  245. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/colpali_main.py +0 -0
  246. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/frontend/.gitignore +0 -0
  247. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/frontend/index.html +0 -0
  248. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/frontend/src/App.jsx +0 -0
  249. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/frontend/src/main.jsx +0 -0
  250. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/frontend/src/style.css +0 -0
  251. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/frontend/vite.config.js +0 -0
  252. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/img/cat1.jpeg +0 -0
  253. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/img/dog1.jpeg +0 -0
  254. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/img/elephant1.jpg +0 -0
  255. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/img/giraffe.jpg +0 -0
  256. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/main.py +0 -0
  257. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/image_search/pyproject.toml +0 -0
  258. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/live_updates/.env +0 -0
  259. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/live_updates/README.md +0 -0
  260. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/live_updates/data/bizarre_animals.md +0 -0
  261. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/live_updates/data/chunk_norris.md +0 -0
  262. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/live_updates/main.py +0 -0
  263. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/live_updates/pyproject.toml +0 -0
  264. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/manuals_llm_extraction/.env +0 -0
  265. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/manuals_llm_extraction/README.md +0 -0
  266. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/manuals_llm_extraction/main.py +0 -0
  267. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/manuals_llm_extraction/manuals/array.pdf +0 -0
  268. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/manuals_llm_extraction/manuals/base64.pdf +0 -0
  269. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/manuals_llm_extraction/manuals/copy.pdf +0 -0
  270. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/manuals_llm_extraction/manuals/glob.pdf +0 -0
  271. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/manuals_llm_extraction/pyproject.toml +0 -0
  272. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/multi_format_indexing/.env +0 -0
  273. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/multi_format_indexing/README.md +0 -0
  274. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/multi_format_indexing/main.py +0 -0
  275. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/multi_format_indexing/pyproject.toml +0 -0
  276. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/multi_format_indexing/source_files/1706.03762v7.pdf +0 -0
  277. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/multi_format_indexing/source_files/1810.04805v2.pdf +0 -0
  278. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/multi_format_indexing/source_files/2502.06786v3.pdf +0 -0
  279. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/multi_format_indexing/source_files/healthcare_industry_test_p101.jpg +0 -0
  280. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/multi_format_indexing/source_files/healthcare_industry_test_p86.jpg +0 -0
  281. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/multi_format_indexing/source_files/healthcare_industry_test_p9.jpg +0 -0
  282. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/multi_format_indexing/source_files/restaurant_brands_international_2023.jpg +0 -0
  283. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/multi_format_indexing/source_files/sweetgreen_2023.jpg +0 -0
  284. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/paper_metadata/.env.example +0 -0
  285. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/paper_metadata/.gitignore +0 -0
  286. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/paper_metadata/README.md +0 -0
  287. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/paper_metadata/main.py +0 -0
  288. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/paper_metadata/papers/1706.03762v7.pdf +0 -0
  289. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/paper_metadata/papers/1810.04805v2.pdf +0 -0
  290. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/paper_metadata/papers/2502.06786v3.pdf +0 -0
  291. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/paper_metadata/papers/2502.20346v1.pdf +0 -0
  292. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/paper_metadata/pyproject.toml +0 -0
  293. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/patient_intake_extraction/.env.example +0 -0
  294. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/patient_intake_extraction/README.md +0 -0
  295. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/patient_intake_extraction/data/README.md +0 -0
  296. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_David_Artificial.docx +0 -0
  297. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_Emily_Artificial.pdf +0 -0
  298. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_Joe_Artificial.pdf +0 -0
  299. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_From_Jane_Artificial.docx +0 -0
  300. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/patient_intake_extraction/main.py +0 -0
  301. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/patient_intake_extraction/pyproject.toml +0 -0
  302. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/pdf_embedding/.env +0 -0
  303. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/pdf_embedding/README.md +0 -0
  304. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/pdf_embedding/main.py +0 -0
  305. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/pdf_embedding/pdf_files/1706.03762v7.pdf +0 -0
  306. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/pdf_embedding/pdf_files/1810.04805v2.pdf +0 -0
  307. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/pdf_embedding/pdf_files/rfc8259.pdf +0 -0
  308. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/pdf_embedding/pyproject.toml +0 -0
  309. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/postgres_source/README.md +0 -0
  310. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/postgres_source/main.py +0 -0
  311. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/postgres_source/prepare_source_data.sql +0 -0
  312. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/postgres_source/pyproject.toml +0 -0
  313. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/.env.example +0 -0
  314. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/.gitignore +0 -0
  315. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/README.md +0 -0
  316. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/img/cocoinsight.png +0 -0
  317. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/img/neo4j.png +0 -0
  318. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/main.py +0 -0
  319. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/products/p1.json +0 -0
  320. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/products/p2.json +0 -0
  321. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/products/p3.json +0 -0
  322. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/products/p4.json +0 -0
  323. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/products/p5.json +0 -0
  324. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/products/p6.json +0 -0
  325. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/products/p7.json +0 -0
  326. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/products/p8.json +0 -0
  327. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/products/p9.json +0 -0
  328. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/product_recommendation/pyproject.toml +0 -0
  329. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/text_embedding/.env +0 -0
  330. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/text_embedding/README.md +0 -0
  331. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/text_embedding/Text_Embedding.ipynb +0 -0
  332. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/text_embedding/markdown_files/1706.03762v7.md +0 -0
  333. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/text_embedding/markdown_files/1810.04805v2.md +0 -0
  334. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/text_embedding/markdown_files/rfc8259.md +0 -0
  335. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/text_embedding/pyproject.toml +0 -0
  336. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/text_embedding_qdrant/.env +0 -0
  337. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/text_embedding_qdrant/README.md +0 -0
  338. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/text_embedding_qdrant/markdown_files/rfc8259.md +0 -0
  339. {cocoindex-0.2.10 → cocoindex-0.2.12}/examples/text_embedding_qdrant/pyproject.toml +0 -0
  340. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/cli.py +0 -0
  341. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/functions.py +0 -0
  342. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/index.py +0 -0
  343. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/lib.py +0 -0
  344. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/llm.py +0 -0
  345. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/py.typed +0 -0
  346. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/setting.py +0 -0
  347. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/setup.py +0 -0
  348. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/sources.py +0 -0
  349. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/subprocess_exec.py +0 -0
  350. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/tests/__init__.py +0 -0
  351. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/tests/test_optional_database.py +0 -0
  352. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/tests/test_transform_flow.py +0 -0
  353. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/tests/test_validation.py +0 -0
  354. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/user_app_loader.py +0 -0
  355. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/utils.py +0 -0
  356. {cocoindex-0.2.10 → cocoindex-0.2.12}/python/cocoindex/validation.py +0 -0
  357. {cocoindex-0.2.10 → cocoindex-0.2.12}/ruff.toml +0 -0
  358. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/base/duration.rs +0 -0
  359. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/base/field_attrs.rs +0 -0
  360. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/base/mod.rs +0 -0
  361. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/base/schema.rs +0 -0
  362. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/base/value.rs +0 -0
  363. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/builder/analyzed_flow.rs +0 -0
  364. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/builder/flow_builder.rs +0 -0
  365. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/builder/mod.rs +0 -0
  366. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/execution/db_tracking_setup.rs +0 -0
  367. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/execution/dumper.rs +0 -0
  368. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/execution/evaluator.rs +0 -0
  369. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/execution/indexing_status.rs +0 -0
  370. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/execution/live_updater.rs +0 -0
  371. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/execution/memoization.rs +0 -0
  372. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/execution/mod.rs +0 -0
  373. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/execution/stats.rs +0 -0
  374. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/lib.rs +0 -0
  375. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/llm/anthropic.rs +0 -0
  376. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/llm/gemini.rs +0 -0
  377. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/llm/litellm.rs +0 -0
  378. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/llm/mod.rs +0 -0
  379. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/llm/ollama.rs +0 -0
  380. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/llm/openai.rs +0 -0
  381. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/llm/openrouter.rs +0 -0
  382. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/llm/vllm.rs +0 -0
  383. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/llm/voyage.rs +0 -0
  384. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/functions/embed_text.rs +0 -0
  385. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/functions/extract_by_llm.rs +0 -0
  386. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/functions/mod.rs +0 -0
  387. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/functions/parse_json.rs +0 -0
  388. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/functions/split_recursively.rs +0 -0
  389. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/functions/test_utils.rs +0 -0
  390. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/mod.rs +0 -0
  391. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/registration.rs +0 -0
  392. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/registry.rs +0 -0
  393. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/sdk.rs +0 -0
  394. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/shared/mod.rs +0 -0
  395. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/shared/postgres.rs +0 -0
  396. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/sources/amazon_s3.rs +0 -0
  397. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/sources/azure_blob.rs +0 -0
  398. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/sources/google_drive.rs +0 -0
  399. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/sources/local_file.rs +0 -0
  400. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/sources/mod.rs +0 -0
  401. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/sources/postgres.rs +0 -0
  402. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/sources/shared/mod.rs +0 -0
  403. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/sources/shared/pattern_matcher.rs +0 -0
  404. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/targets/kuzu.rs +0 -0
  405. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/targets/mod.rs +0 -0
  406. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/targets/neo4j.rs +0 -0
  407. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/targets/shared/mod.rs +0 -0
  408. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/ops/targets/shared/table_columns.rs +0 -0
  409. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/prelude.rs +0 -0
  410. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/py/convert.rs +0 -0
  411. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/service/error.rs +0 -0
  412. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/settings.rs +0 -0
  413. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/setup/components.rs +0 -0
  414. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/setup/db_metadata.rs +0 -0
  415. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/setup/driver.rs +0 -0
  416. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/setup/flow_features.rs +0 -0
  417. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/setup/mod.rs +0 -0
  418. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/utils/concur_control.rs +0 -0
  419. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/utils/db.rs +0 -0
  420. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/utils/deser.rs +0 -0
  421. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/utils/fingerprint.rs +0 -0
  422. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/utils/immutable.rs +0 -0
  423. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/utils/mod.rs +0 -0
  424. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/utils/retryable.rs +0 -0
  425. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/utils/str_sanitize.rs +0 -0
  426. {cocoindex-0.2.10 → cocoindex-0.2.12}/src/utils/yaml_ser.rs +0 -0
@@ -3,6 +3,10 @@ name: Release Docs (INTERNAL)
3
3
  on:
4
4
  workflow_call:
5
5
 
6
+ permissions:
7
+ contents: read
8
+ pages: write
9
+
6
10
  jobs:
7
11
  deploy:
8
12
  runs-on: ubuntu-latest
@@ -3,6 +3,9 @@ name: Run Tests (INTERNAL)
3
3
  on:
4
4
  workflow_call:
5
5
 
6
+ permissions:
7
+ contents: read
8
+
6
9
  env:
7
10
  CARGO_TERM_COLOR: always
8
11
 
@@ -5,6 +5,7 @@ on:
5
5
 
6
6
  permissions:
7
7
  contents: write
8
+ pages: write
8
9
 
9
10
  jobs:
10
11
  deploy:
@@ -7,6 +7,9 @@ on:
7
7
  - docs/**
8
8
  - ".github/workflows/docs_test.yml"
9
9
 
10
+ permissions:
11
+ contents: read
12
+
10
13
  jobs:
11
14
  test-deploy:
12
15
  runs-on: ubuntu-latest
@@ -12,6 +12,7 @@ on:
12
12
 
13
13
  permissions:
14
14
  contents: read
15
+ pages: write
15
16
 
16
17
  jobs:
17
18
  create-versioned-toml:
@@ -21,3 +21,6 @@ examples/**/eval_*
21
21
 
22
22
  /.vscode
23
23
  /*.session.sql
24
+
25
+ # mypy daemon environment
26
+ .dmypy.json
@@ -49,7 +49,7 @@ repos:
49
49
 
50
50
  - id: mypy-check
51
51
  name: mypy type check
52
- entry: mypy --cache-fine-grain
52
+ entry: dmypy run python
53
53
  language: system
54
54
  types: [python]
55
55
  pass_filenames: false
@@ -1283,7 +1283,7 @@ dependencies = [
1283
1283
 
1284
1284
  [[package]]
1285
1285
  name = "cocoindex"
1286
- version = "0.2.10"
1286
+ version = "0.2.12"
1287
1287
  dependencies = [
1288
1288
  "anyhow",
1289
1289
  "async-openai",
@@ -2,9 +2,9 @@
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.10"
5
+ version = "0.2.12"
6
6
  edition = "2024"
7
- rust-version = "1.88"
7
+ rust-version = "1.89"
8
8
  license = "Apache-2.0"
9
9
  readme = "README.md"
10
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cocoindex
3
- Version: 0.2.10
3
+ Version: 0.2.12
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: License :: OSI Approved :: Apache Software License
6
6
  Classifier: Operating System :: OS Independent
@@ -29,11 +29,14 @@ Requires-Dist: mypy ; extra == 'dev'
29
29
  Requires-Dist: pre-commit ; extra == 'dev'
30
30
  Requires-Dist: sentence-transformers>=3.3.1 ; extra == 'embeddings'
31
31
  Requires-Dist: colpali-engine ; extra == 'colpali'
32
+ Requires-Dist: lancedb>=0.25.0 ; extra == 'lancedb'
32
33
  Requires-Dist: sentence-transformers>=3.3.1 ; extra == 'all'
33
34
  Requires-Dist: colpali-engine ; extra == 'all'
35
+ Requires-Dist: lancedb>=0.25.0 ; extra == 'all'
34
36
  Provides-Extra: dev
35
37
  Provides-Extra: embeddings
36
38
  Provides-Extra: colpali
39
+ Provides-Extra: lancedb
37
40
  Provides-Extra: all
38
41
  License-File: THIRD_PARTY_NOTICES.html
39
42
  Summary: With CocoIndex, users declare the transformation, CocoIndex creates & maintains an index, and keeps the derived index up to date based on source update, with minimal computation and changes.
@@ -2428,7 +2428,7 @@ Software.
2428
2428
  <h3 id="Apache-2.0">Apache License 2.0</h3>
2429
2429
  <h4>Used by:</h4>
2430
2430
  <ul class="license-used-by">
2431
- <li><a href=" https://crates.io/crates/cocoindex ">cocoindex 0.2.10</a></li>
2431
+ <li><a href=" https://crates.io/crates/cocoindex ">cocoindex 0.2.12</a></li>
2432
2432
  <li><a href=" https://github.com/awesomized/crc-fast-rust ">crc-fast 1.3.0</a></li>
2433
2433
  <li><a href=" https://github.com/qdrant/rust-client ">qdrant-client 1.15.0</a></li>
2434
2434
  </ul>
@@ -5,7 +5,7 @@ description: How to contribute to CocoIndex
5
5
 
6
6
  [CocoIndex](https://github.com/cocoindex-io/cocoindex) is an open source project. We are respectful, open and friendly. This guide explains how to get involved and contribute to [CocoIndex](https://github.com/cocoindex-io/cocoindex).
7
7
 
8
- Our [Discord server](https://discord.com/invite/zpA9S2DR7s) is constantly open.
8
+ Our [Discord server](https://discord.com/invite/zpA9S2DR7s) is constantly open.
9
9
  If you are unsure about anything, it is a good place to discuss! We'd love to collaborate and will always be friendly.
10
10
 
11
11
  ## Good First Issues
@@ -44,4 +44,4 @@ Follow the steps below to get CocoIndex built on the latest codebase locally - i
44
44
  - Before running a specific example, set extra environment variables, for exposing extra traces, allowing dev UI, etc.
45
45
  ```sh
46
46
  . ./.env.lib_debug
47
- ```
47
+ ```
@@ -7,6 +7,7 @@ canonicalUrl: '/examples/academic_papers_index'
7
7
  sidebar_custom_props:
8
8
  image: /img/examples/academic_papers_index/cover.png
9
9
  tags: [vector-index, metadata]
10
+ image: /img/examples/academic_papers_index/cover.png
10
11
  tags: [vector-index, metadata]
11
12
  ---
12
13
 
@@ -20,10 +21,10 @@ import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/c
20
21
 
21
22
  1. Extract the paper metadata, including file name, title, author information, abstract, and number of pages.
22
23
 
23
- 2. Build vector embeddings for the metadata, such as the title and abstract, for semantic search.
24
+ 2. Build vector embeddings for the metadata, such as the title and abstract, for semantic search.
24
25
  This enables better metadata-driven semantic search results. For example, you can match text queries against titles and abstracts.
25
26
 
26
- 3. Build an index of authors and all the file names associated with each author
27
+ 3. Build an index of authors and all the file names associated with each author
27
28
  to answer questions like "Give me all the papers by Jeff Dean."
28
29
 
29
30
  4. If you want to perform full PDF embedding for the paper, you can extend the flow.
@@ -107,7 +108,7 @@ After this step, we should have the basic info of each paper.
107
108
 
108
109
  We will convert the first page to Markdown using Marker. Alternatively, you can easily plug in any PDF parser, such as Docling using CocoIndex's [custom function](https://cocoindex.io/docs/custom_ops/custom_functions).
109
110
 
110
- Define a marker converter function and cache it, since its initialization is resource-intensive.
111
+ Define a marker converter function and cache it, since its initialization is resource-intensive.
111
112
  This ensures that the same converter instance is reused for different input files.
112
113
 
113
114
  ```python
@@ -136,7 +137,7 @@ def pdf_to_markdown(content: bytes) -> str:
136
137
  Pass it to your transform
137
138
 
138
139
  ```python
139
- with data_scope["documents"].row() as doc:
140
+ with data_scope["documents"].row() as doc:
140
141
  # ... process
141
142
  doc["first_page_md"] = doc["basic_info"]["first_page"].transform(
142
143
  pdf_to_markdown
@@ -199,7 +200,7 @@ paper_metadata.collect(
199
200
  Just collect anything you need :)
200
201
 
201
202
  ### Collect `author` to `filename` information
202
- We’ve already extracted author list. Here we want to collect Author → Papers in a separate table to build a look up functionality.
203
+ We’ve already extracted author list. Here we want to collect Author → Papers in a separate table to build a look up functionality.
203
204
  Simply collect by author.
204
205
 
205
206
  ```python
@@ -228,8 +229,8 @@ doc["title_embedding"] = doc["metadata"]["title"].transform(
228
229
 
229
230
  ### Abstract
230
231
 
231
- Split abstract into chunks, embed each chunk and collect their embeddings.
232
- Sometimes the abstract could be very long.
232
+ Split abstract into chunks, embed each chunk and collect their embeddings.
233
+ Sometimes the abstract could be very long.
233
234
 
234
235
  ```python
235
236
  doc["abstract_chunks"] = doc["metadata"]["abstract"].transform(
@@ -307,7 +308,7 @@ author_papers.export(
307
308
  "author_papers",
308
309
  cocoindex.targets.Postgres(),
309
310
  primary_key_fields=["author_name", "filename"],
310
- )
311
+ )
311
312
  metadata_embeddings.export(
312
313
  "metadata_embeddings",
313
314
  cocoindex.targets.Postgres(),
@@ -327,9 +328,9 @@ In this example we use PGVector as embedding store. With CocoIndex, you can do o
327
328
 
328
329
  ## Query the index
329
330
 
330
- You can refer to this section of [Text Embeddings](https://cocoindex.io/blogs/text-embeddings-101#3-query-the-index) about
331
- how to build query against embeddings.
332
- For now CocoIndex doesn't provide additional query interface. We can write SQL or rely on the query engine by the target storage.
331
+ You can refer to this section of [Text Embeddings](https://cocoindex.io/blogs/text-embeddings-101#3-query-the-index) about
332
+ how to build query against embeddings.
333
+ For now CocoIndex doesn't provide additional query interface. We can write SQL or rely on the query engine by the target storage.
333
334
 
334
335
  - Many databases already have optimized query implementations with their own best practices
335
336
  - The query space has excellent solutions for querying, reranking, and other search-related functionality.
@@ -7,6 +7,7 @@ canonicalUrl: '/examples/code_index'
7
7
  sidebar_custom_props:
8
8
  image: /img/examples/codebase_index/cover.png
9
9
  tags: [vector-index, codebase]
10
+ image: /img/examples/codebase_index/cover.png
10
11
  tags: [vector-index, codebase]
11
12
  ---
12
13
 
@@ -18,7 +19,7 @@ import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/c
18
19
  ![Codebase Index](/img/examples/codebase_index/cover.png)
19
20
 
20
21
  ## Overview
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.
22
+ 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.
22
23
 
23
24
  ## Use Cases
24
25
  A wide range of applications can be built with an effective codebase index that is always up-to-date.
@@ -43,14 +44,14 @@ The flow is composed of the following steps:
43
44
  - Generate embeddings for each chunk
44
45
  - Store in a vector database for retrieval
45
46
 
46
- ## Setup
47
+ ## Setup
47
48
  - Install Postgres, follow [installation guide](https://cocoindex.io/docs/getting_started/installation#-install-postgres).
48
49
  - Install CocoIndex
49
50
  ```bash
50
51
  pip install -U cocoindex
51
52
  ```
52
53
 
53
- ## Add the codebase as a source.
54
+ ## Add the codebase as a source.
54
55
  We will index the CocoIndex codebase. Here we use the `LocalFile` source to ingest files from the CocoIndex codebase root directory.
55
56
 
56
57
  ```python
@@ -66,7 +67,7 @@ def code_embedding_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoind
66
67
  - Include files with the extensions of `.py`, `.rs`, `.toml`, `.md`, `.mdx`
67
68
  - Exclude files and directories starting `.`, `target` in the root and `node_modules` under any directory.
68
69
 
69
- `flow_builder.add_source` will create a table with sub fields (`filename`, `content`).
70
+ `flow_builder.add_source` will create a table with sub fields (`filename`, `content`).
70
71
  <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" />
71
72
 
72
73
 
@@ -95,14 +96,14 @@ with data_scope["files"].row() as file:
95
96
  file["extension"] = file["filename"].transform(extract_extension)
96
97
  file["chunks"] = file["content"].transform(
97
98
  cocoindex.functions.SplitRecursively(),
98
- language=file["extension"], chunk_size=1000, chunk_overlap=300)
99
+ language=file["extension"], chunk_size=1000, chunk_overlap=300)
99
100
  ```
100
101
  <DocumentationButton url="https://cocoindex.io/docs/ops/functions#splitrecursively" text="SplitRecursively" margin="0 0 16px 0" />
101
102
 
102
103
  ![SplitRecursively](/img/examples/codebase_index/chunk.png)
103
104
 
104
105
  ### Embed the chunks
105
- We use `SentenceTransformerEmbed` to embed the chunks.
106
+ We use `SentenceTransformerEmbed` to embed the chunks.
106
107
 
107
108
  ```python
108
109
  @cocoindex.transform_flow()
@@ -140,7 +141,7 @@ code_embeddings.export(
140
141
  vector_indexes=[cocoindex.VectorIndex("embedding", cocoindex.VectorSimilarityMetric.COSINE_SIMILARITY)])
141
142
  ```
142
143
 
143
- We use [Cosine Similarity](https://en.wikipedia.org/wiki/Cosine_similarity) to measure the similarity between the query and the indexed data.
144
+ We use [Cosine Similarity](https://en.wikipedia.org/wiki/Cosine_similarity) to measure the similarity between the query and the indexed data.
144
145
 
145
146
  ## Query the index
146
147
  We match against user-provided text by a SQL query, reusing the embedding operation in the indexing flow.
@@ -229,4 +230,4 @@ Follow the url from the terminal - `https://cocoindex.io/cocoinsight` to access
229
230
 
230
231
  SplitRecursively has native support for all major programming languages.
231
232
 
232
- <DocumentationButton url="https://cocoindex.io/docs/ops/functions#supported-languages" text="Supported Languages" margin="0 0 16px 0" />
233
+ <DocumentationButton url="https://cocoindex.io/docs/ops/functions#supported-languages" text="Supported Languages" margin="0 0 16px 0" />
@@ -7,6 +7,7 @@ canonicalUrl: '/examples/custom_targets'
7
7
  sidebar_custom_props:
8
8
  image: /img/examples/custom_targets/cover.png
9
9
  tags: [custom-building-blocks]
10
+ image: /img/examples/custom_targets/cover.png
10
11
  tags: [custom-building-blocks]
11
12
  ---
12
13
  import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/components/GitHubButton';
@@ -34,7 +35,7 @@ flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.DataScope
34
35
  refresh_interval=timedelta(seconds=5),
35
36
  )
36
37
  ```
37
- This ingestion creates a table with `filename` and `content` fields.
38
+ This ingestion creates a table with `filename` and `content` fields.
38
39
  <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" />
39
40
 
40
41
  ## Process each file and collect
@@ -91,7 +92,7 @@ class LocalFileTargetConnector:
91
92
 
92
93
  ```
93
94
 
94
- The `describe()` method returns a human-readable string that describes the target, which is displayed in the CLI logs.
95
+ The `describe()` method returns a human-readable string that describes the target, which is displayed in the CLI logs.
95
96
  For example, it prints:
96
97
 
97
98
  `Target: Local directory ./data/output`
@@ -103,10 +104,10 @@ def describe(key: str) -> str:
103
104
  return f"Local directory {key}"
104
105
  ```
105
106
 
106
- `apply_setup_change()` applies setup changes to the backend. The previous and current specs are passed as arguments,
107
+ `apply_setup_change()` applies setup changes to the backend. The previous and current specs are passed as arguments,
107
108
  and the method is expected to update the backend setup to match the current state.
108
109
 
109
- A `None` spec indicates non-existence, so when `previous` is `None`, we need to create it,
110
+ A `None` spec indicates non-existence, so when `previous` is `None`, we need to create it,
110
111
  and when `current` is `None`, we need to delete it.
111
112
 
112
113
 
@@ -134,8 +135,8 @@ def apply_setup_change(
134
135
  os.rmdir(previous.directory)
135
136
  ```
136
137
 
137
- The `mutate()` method is called by CocoIndex to apply data changes to the target,
138
- batching mutations to potentially multiple targets of the same type.
138
+ The `mutate()` method is called by CocoIndex to apply data changes to the target,
139
+ batching mutations to potentially multiple targets of the same type.
139
140
  This allows the target connector flexibility in implementation (e.g., atomic commits, or processing items with dependencies in a specific order).
140
141
 
141
142
  Each element in the batch corresponds to a specific target and is represented by a tuple containing:
@@ -150,8 +151,8 @@ class LocalFileTargetValues:
150
151
  html: str
151
152
  ```
152
153
 
153
- The value type of the `dict` is `LocalFileTargetValues | None`,
154
- where a non-`None` value means an upsert and `None` value means a delete. Similar to `apply_setup_changes()`,
154
+ The value type of the `dict` is `LocalFileTargetValues | None`,
155
+ where a non-`None` value means an upsert and `None` value means a delete. Similar to `apply_setup_changes()`,
155
156
  idempotency is expected here.
156
157
 
157
158
  ```python
@@ -216,7 +217,5 @@ This keeps your knowledge graph continuously synchronized with your document sou
216
217
  Sometimes there may be an internal/homegrown tool or API (e.g. within a company) that's not publicly available.
217
218
  These can only be connected through custom targets.
218
219
 
219
- ### Faster adoption of new export logic
220
+ ### Faster adoption of new export logic
220
221
  When a new tool, database, or API joins your stack, simply define a Target Spec and Target Connector — start exporting right away, with no pipeline refactoring required.
221
-
222
-
@@ -7,6 +7,7 @@ canonicalUrl: '/examples/knowledge-graph-for-docs'
7
7
  sidebar_custom_props:
8
8
  image: /img/examples/docs_to_knowledge_graph/cover.png
9
9
  tags: [knowledge-graph, structured-data-extraction]
10
+ image: /img/examples/docs_to_knowledge_graph/cover.png
10
11
  tags: [knowledge-graph, structured-data-extraction]
11
12
  ---
12
13
 
@@ -35,7 +36,7 @@ and then build a knowledge graph.
35
36
  - CocoIndex can direct map the collected data to Neo4j nodes and relationships.
36
37
 
37
38
  ## Setup
38
- * [Install PostgreSQL](https://cocoindex.io/docs/getting_started/installation#-install-postgres). CocoIndex uses PostgreSQL internally for incremental processing.
39
+ * [Install PostgreSQL](https://cocoindex.io/docs/getting_started/installation#-install-postgres). CocoIndex uses PostgreSQL internally for incremental processing.
39
40
  * [Install Neo4j](https://cocoindex.io/docs/ops/targets#neo4j-dev-instance), a graph database.
40
41
  * [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.
41
42
 
@@ -50,7 +51,7 @@ and then build a knowledge graph.
50
51
 
51
52
  ### Add documents as source
52
53
 
53
- We will process CocoIndex documentation markdown files (`.md`, `.mdx`) from the `docs/core` directory ([markdown files](https://github.com/cocoindex-io/cocoindex/tree/main/docs/docs/core), [deployed docs](https://cocoindex.io/docs/core/basics)).
54
+ We will process CocoIndex documentation markdown files (`.md`, `.mdx`) from the `docs/core` directory ([markdown files](https://github.com/cocoindex-io/cocoindex/tree/main/docs/docs/core), [deployed docs](https://cocoindex.io/docs/core/basics)).
54
55
 
55
56
  ```python
56
57
  @cocoindex.flow_def(name="DocsToKG")
@@ -140,7 +141,7 @@ Next, we will use `cocoindex.functions.ExtractByLlm` to extract the relationship
140
141
  doc["relationships"] = doc["content"].transform(
141
142
  cocoindex.functions.ExtractByLlm(
142
143
  llm_spec=cocoindex.LlmSpec(
143
- api_type=cocoindex.LlmApiType.OPENAI,
144
+ api_type=cocoindex.LlmApiType.OPENAI,
144
145
  model="gpt-4o"
145
146
  ),
146
147
  output_type=list[Relationship],
@@ -186,7 +187,7 @@ with doc["relationships"].row() as relationship:
186
187
 
187
188
 
188
189
  ### Build knowledge graph
189
-
190
+
190
191
  #### Basic concepts
191
192
  All nodes for Neo4j need two things:
192
193
  1. Label: The type of the node. E.g., `Document`, `Entity`.
@@ -235,10 +236,10 @@ This exports Neo4j nodes with label `Document` from the `document_node` collecto
235
236
 
236
237
  #### Export `RELATIONSHIP` and `Entity` nodes to Neo4j
237
238
 
238
- We don't have explicit collector for `Entity` nodes.
239
+ We don't have explicit collector for `Entity` nodes.
239
240
  They are part of the `entity_relationship` collector and fields are collected during the relationship extraction.
240
241
 
241
- To export them as Neo4j nodes, we need to first declare `Entity` nodes.
242
+ To export them as Neo4j nodes, we need to first declare `Entity` nodes.
242
243
 
243
244
  ```python
244
245
  flow_builder.declare(
@@ -288,7 +289,7 @@ In a relationship, there's:
288
289
  2. A relationship connecting the source and target.
289
290
  Note that different relationships may share the same source and target nodes.
290
291
 
291
- `NodeFromFields` takes the fields from the `entity_relationship` collector and creates `Entity` nodes.
292
+ `NodeFromFields` takes the fields from the `entity_relationship` collector and creates `Entity` nodes.
292
293
 
293
294
  #### Export the `entity_mention` to Neo4j.
294
295
 
@@ -333,7 +334,7 @@ It creates relationships by:
333
334
  ```sh
334
335
  cocoindex update --setup main.py
335
336
  ```
336
-
337
+
337
338
  You'll see the index updates state in the terminal. For example,
338
339
 
339
340
  ```
@@ -342,7 +343,7 @@ It creates relationships by:
342
343
 
343
344
  ## CocoInsight
344
345
 
345
- I used CocoInsight to troubleshoot the index generation and understand the data lineage of the pipeline. It is in free beta now, you can give it a try.
346
+ I used CocoInsight to troubleshoot the index generation and understand the data lineage of the pipeline. It is in free beta now, you can give it a try.
346
347
 
347
348
  ```sh
348
349
  cocoindex server -ci main
@@ -368,7 +369,7 @@ MATCH p=()-->() RETURN p
368
369
  ## Kuzu
369
370
  Cocoindex natively supports Kuzu - a high performant, embedded open source graph database.
370
371
 
371
- <DocumentationButton url="https://cocoindex.io/docs/ops/targets#kuzu" text="Kuzu" margin="0 0 16px 0" />
372
+ <DocumentationButton url="https://cocoindex.io/docs/ops/targets#kuzu" text="Kuzu" margin="0 0 16px 0" />
372
373
 
373
374
  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:
374
375
 
@@ -390,4 +391,3 @@ kuzu_conn_spec = cocoindex.add_auth_entry(
390
391
  ```
391
392
 
392
393
  <GitHubButton url="https://github.com/cocoindex-io/cocoindex/blob/30761f8ab674903d742c8ab2e18d4c588df6d46f/examples/docs_to_knowledge_graph/main.py#L33-L37" margin="0 0 16px 0" />
393
-
@@ -7,6 +7,7 @@ canonicalUrl: '/examples/document_ai'
7
7
  sidebar_custom_props:
8
8
  image: /img/examples/document_ai/cover.png
9
9
  tags: [vector-index, custom-building-block]
10
+ image: /img/examples/document_ai/cover.png
10
11
  tags: [vector-index, custom-building-block]
11
12
  ---
12
13
  import { GitHubButton, DocumentationButton, ExampleButton } from '../../../src/components/GitHubButton';
@@ -20,7 +21,7 @@ CocoIndex is a flexible ETL framework with incremental processing. We don’t b
20
21
 
21
22
  ## Set up
22
23
  - [Install Postgres](https://cocoindex.io/docs/getting_started/installation#-install-postgres) if you don't have one.
23
- - Configure Project and Processor ID for Document AI API
24
+ - Configure Project and Processor ID for Document AI API
24
25
  - [Official Google document AI API](https://cloud.google.com/document-ai/docs/try-docai) with free live demo.
25
26
  - Sign in to [Google Cloud Console](https://console.cloud.google.com/), create or open a project, and enable Document AI API.
26
27
  - ![image.png](/img/examples/document_ai/document_ai.png)
@@ -7,6 +7,7 @@ canonicalUrl: '/examples/image_search'
7
7
  sidebar_custom_props:
8
8
  image: /img/examples/image_search/cover.png
9
9
  tags: [vector-index, multi-modal]
10
+ image: /img/examples/image_search/cover.png
10
11
  tags: [vector-index, multi-modal]
11
12
  ---
12
13
 
@@ -20,7 +21,7 @@ import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/c
20
21
  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
 
22
23
 
23
- ## ColPali
24
+ ## ColPali
24
25
 
25
26
  **ColPali (Contextual Late-interaction over Patches)** is a powerful model for multimodal retrieval.
26
27
 
@@ -7,6 +7,7 @@ canonicalUrl: '/examples/manual_extraction'
7
7
  sidebar_custom_props:
8
8
  image: /img/examples/manual_extraction/cover.png
9
9
  tags: [structured-data-extraction, data-mapping]
10
+ image: /img/examples/manual_extraction/cover.png
10
11
  tags: [structured-data-extraction, data-mapping]
11
12
  ---
12
13
 
@@ -187,7 +188,7 @@ def summarize_module(module_info: ModuleInfo) -> ModuleSummary:
187
188
  num_classes=len(module_info.classes),
188
189
  num_methods=len(module_info.methods),
189
190
  )
190
- ```
191
+ ```
191
192
 
192
193
  ### Plug in the function into the flow
193
194
  ```python
@@ -248,4 +249,3 @@ SELECT filename, module_info->'title' AS title, module_summary FROM modules_info
248
249
  cocoindex server -ci main
249
250
  ```
250
251
  CocoInsight dashboard is here `https://cocoindex.io/cocoinsight`. It connects to your local CocoIndex server with zero data retention.
251
-
@@ -1,5 +1,5 @@
1
1
  ---
2
- title: Index PDFs, Images, Slides without OCR
2
+ title: Index PDFs, Images, Slides without OCR
3
3
  description: Build a visual document indexing pipeline using ColPali to index scanned documents, PDFs, academic papers, presentation slides, and standalone images — all mixed together with charts, tables, and figures - into the same vector space.
4
4
  sidebar_class_name: hidden
5
5
  slug: /examples/multi_format_index
@@ -7,6 +7,7 @@ canonicalUrl: '/examples/multi_format_index'
7
7
  sidebar_custom_props:
8
8
  image: /img/examples/multi_format_index/cover.png
9
9
  tags: [vector-index, multi-modal]
10
+ image: /img/examples/multi_format_index/cover.png
10
11
  tags: [vector-index, multi-modal]
11
12
  ---
12
13
 
@@ -19,7 +20,7 @@ import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/c
19
20
  ## Overview
20
21
  Do you have a messy collection of scanned documents, PDFs, academic papers, presentation slides, and standalone images — all mixed together with charts, tables, and figures — that you want to process into the same vector space for semantic search or to power an AI agent?
21
22
 
22
- In this example, we’ll walk through how to build a visual document indexing pipeline using ColPali for embedding both PDFs and images — and then query the index using natural language.
23
+ In this example, we’ll walk through how to build a visual document indexing pipeline using ColPali for embedding both PDFs and images — and then query the index using natural language.
23
24
 
24
25
  We’ll skip OCR entirely — ColPali can directly understand document layouts, tables, and figures from images, making it perfect for semantic search across visual-heavy content.
25
26
 
@@ -56,7 +57,7 @@ data_scope["documents"] = flow_builder.add_source(
56
57
 
57
58
  ## Convert Files to Pages
58
59
 
59
- We classify files by MIME type and process accordingly.
60
+ We classify files by MIME type and process accordingly.
60
61
 
61
62
  Define a dataclass:
62
63
 
@@ -111,7 +112,7 @@ In the flow we convert all the files to pages. this makes each pages and all ima
111
112
 
112
113
  ## Generate Visual Embeddings
113
114
 
114
- We use ColPali to generate embeddings for images on each page.
115
+ We use ColPali to generate embeddings for images on each page.
115
116
 
116
117
  ```python
117
118
  with doc["pages"].row() as page:
@@ -131,7 +132,7 @@ with doc["pages"].row() as page:
131
132
 
132
133
  ![Embedding](/img/examples/multi_format_index/embed.png)
133
134
 
134
- ColPali Architecture 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.
135
+ ColPali Architecture 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.
135
136
 
136
137
  Each patch receives its own embedding, which together form a multi-vector representation of the complete document.
137
138
 
@@ -142,7 +143,7 @@ Each patch receives its own embedding, which together form a multi-vector repres
142
143
 
143
144
  ## Export to Qdrant
144
145
 
145
- Note the way to embed image and query are different, as they’re two different types of data.
146
+ Note the way to embed image and query are different, as they’re two different types of data.
146
147
 
147
148
  Create a function to embed query:
148
149
 
@@ -199,9 +200,7 @@ cocoindex server -ci main
199
200
  Follow the url `https://cocoindex.io/cocoinsight`. It connects to your local CocoIndex server, with zero pipeline data retention. You can use it to view extracted pages, see embedding vectors and metadata.
200
201
 
201
202
 
202
- ## Connect to other sources
203
+ ## Connect to other sources
203
204
  CocoIndex natively supports Google Drive, Amazon S3, Azure Blob Storage, and more.
204
205
 
205
206
  <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
206
-
207
-
@@ -7,6 +7,7 @@ canonicalUrl: '/examples/patient_form_extraction'
7
7
  sidebar_custom_props:
8
8
  image: /img/examples/patient_form_extraction/cover.png
9
9
  tags: [structured-data-extraction, data-mapping ]
10
+ image: /img/examples/patient_form_extraction/cover.png
10
11
  tags: [structured-data-extraction, data-mapping]
11
12
  ---
12
13
 
@@ -21,7 +22,7 @@ import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/c
21
22
  With CocoIndex, you can easily define nested schema in Python dataclass and use LLM to extract structured data from unstructured data. This example shows how to extract structured data from patient intake forms.
22
23
 
23
24
  :::info
24
- The extraction quality is highly dependent on the OCR quality. You can use CocoIndex with any commercial parser or open source ones that is tailored for your domain for better results. For example, Document AI from Google Cloud and more.
25
+ The extraction quality is highly dependent on the OCR quality. You can use CocoIndex with any commercial parser or open source ones that is tailored for your domain for better results. For example, Document AI from Google Cloud and more.
25
26
  :::
26
27
 
27
28
  ## Flow Overview
@@ -68,7 +69,7 @@ def patient_intake_extraction_flow(
68
69
 
69
70
  ## Parse documents with different formats to Markdown
70
71
 
71
- Define a custom function to parse documents in any format to Markdown. Here we use [MarkItDown](https://github.com/microsoft/markitdown) to convert the file to Markdown. It also provides options to parse by LLM, like `gpt-4o`. At present, MarkItDown supports: PDF, Word, Excel, Images (EXIF metadata and OCR), etc.
72
+ Define a custom function to parse documents in any format to Markdown. Here we use [MarkItDown](https://github.com/microsoft/markitdown) to convert the file to Markdown. It also provides options to parse by LLM, like `gpt-4o`. At present, MarkItDown supports: PDF, Word, Excel, Images (EXIF metadata and OCR), etc.
72
73
 
73
74
  ```python
74
75
  class ToMarkdown(cocoindex.op.FunctionSpec):
@@ -103,7 +104,7 @@ with data_scope["documents"].row() as doc:
103
104
 
104
105
  ![Markdown](/img/examples/patient_form_extraction/tomarkdown.png)
105
106
 
106
- ## Define output schema
107
+ ## Define output schema
107
108
 
108
109
  We are going to define the patient info schema for structured extraction. One of the best examples to define a patient info schema is probably following the [FHIR standard - Patient Resource](https://build.fhir.org/patient.html#resource).
109
110
 
@@ -274,7 +275,7 @@ For mission-critical use cases, it is important to evaluate the quality of the e
274
275
 
275
276
 
276
277
  ## Troubleshooting
277
- If extraction is not ideal, this is how I troubleshoot. My original golden file for this record is [this one](https://github.com/cocoindex-io/patient-intake-extraction/blob/main/data/example_forms/Patient_Intake_Form_Joe_Artificial.pdf).
278
+ If extraction is not ideal, this is how I troubleshoot. My original golden file for this record is [this one](https://github.com/cocoindex-io/patient-intake-extraction/blob/main/data/example_forms/Patient_Intake_Form_Joe_Artificial.pdf).
278
279
 
279
280
  We could troubleshoot in two steps:
280
281
  1. Convert to Markdown
@@ -292,7 +293,7 @@ Go to `https://cocoindex.io/cocoinsight`. You could see an interactive UI to exp
292
293
  Click on the `markdown` column for `Patient_Intake_Form_Joe.pdf`, you could see the Markdown content. We could try a few different models with the Markdown converter/LLM to iterate and see if we can get better results, or needs manual correction.
293
294
 
294
295
 
295
- ## Connect to other sources
296
+ ## Connect to other sources
296
297
  CocoIndex natively supports Google Drive, Amazon S3, Azure Blob Storage, and more.
297
298
 
298
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
299
+ <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />