cocoindex 0.2.18__tar.gz → 0.2.20__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 (462) hide show
  1. {cocoindex-0.2.18 → cocoindex-0.2.20}/Cargo.lock +1 -1
  2. {cocoindex-0.2.18 → cocoindex-0.2.20}/Cargo.toml +1 -1
  3. {cocoindex-0.2.18 → cocoindex-0.2.20}/PKG-INFO +15 -8
  4. {cocoindex-0.2.18 → cocoindex-0.2.20}/README.md +14 -7
  5. {cocoindex-0.2.18 → cocoindex-0.2.20}/THIRD_PARTY_NOTICES.html +1 -1
  6. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/ai/llm.mdx +26 -0
  7. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/core/flow_methods.mdx +1 -1
  8. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/examples/examples/academic_papers_index.md +1 -1
  9. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/examples/examples/codebase_index.md +1 -1
  10. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/examples/examples/custom_targets.md +1 -1
  11. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/examples/examples/docs_to_knowledge_graph.md +1 -1
  12. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/examples/examples/document_ai.md +2 -2
  13. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/examples/examples/image_search.md +2 -2
  14. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/examples/examples/manual_extraction.md +1 -1
  15. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/examples/examples/multi_format_index.md +2 -2
  16. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/examples/examples/patient_form_extraction.md +2 -2
  17. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/examples/examples/photo_search.md +2 -2
  18. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/examples/examples/postgres_source.md +1 -1
  19. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/examples/examples/product_recommendation.md +1 -1
  20. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/examples/examples/simple_vector_index.md +1 -1
  21. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/getting_started/quickstart.md +1 -1
  22. cocoindex-0.2.20/docs/docs/sources/amazons3.md +121 -0
  23. cocoindex-0.2.20/docs/docs/sources/azureblob.md +80 -0
  24. cocoindex-0.2.20/docs/docs/sources/googledrive.md +56 -0
  25. cocoindex-0.2.20/docs/docs/sources/index.md +22 -0
  26. cocoindex-0.2.20/docs/docs/sources/localfile.md +30 -0
  27. cocoindex-0.2.20/docs/docs/sources/postgres.md +104 -0
  28. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/targets/index.md +0 -1
  29. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/targets/kuzu.md +3 -1
  30. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/sidebars.ts +5 -0
  31. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/amazon_s3_embedding/README.md +1 -1
  32. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/azure_blob_embedding/README.md +1 -1
  33. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/code_embedding/main.py +4 -9
  34. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/docs_to_knowledge_graph/README.md +3 -6
  35. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/docs_to_knowledge_graph/main.py +14 -21
  36. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/gdrive_text_embedding/README.md +1 -1
  37. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/manuals_llm_extraction/main.py +3 -0
  38. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/patient_intake_extraction/README.md +1 -1
  39. cocoindex-0.2.20/examples/pdf_elements_embedding/.gitignore +1 -0
  40. cocoindex-0.2.20/examples/pdf_elements_embedding/README.md +71 -0
  41. cocoindex-0.2.20/examples/pdf_elements_embedding/fetch_manual_urls.sh +15 -0
  42. cocoindex-0.2.20/examples/pdf_elements_embedding/main.py +183 -0
  43. cocoindex-0.2.20/examples/pdf_elements_embedding/pyproject.toml +14 -0
  44. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/README.md +3 -5
  45. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/main.py +0 -17
  46. cocoindex-0.2.20/examples/text_embedding_qdrant/.env +6 -0
  47. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding_qdrant/README.md +1 -1
  48. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/llm.py +1 -0
  49. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/sources/_engine_builtin_specs.py +3 -0
  50. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/base/spec.rs +1 -1
  51. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/builder/analyzer.rs +61 -2
  52. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/builder/plan.rs +12 -1
  53. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/execution/indexing_status.rs +4 -2
  54. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/execution/row_indexer.rs +8 -8
  55. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/execution/source_indexer.rs +1 -1
  56. cocoindex-0.2.20/src/llm/bedrock.rs +185 -0
  57. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/llm/mod.rs +10 -1
  58. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/sources/postgres.rs +34 -18
  59. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/targets/neo4j.rs +29 -6
  60. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/utils/fingerprint.rs +6 -0
  61. cocoindex-0.2.18/docs/docs/sources/index.md +0 -365
  62. cocoindex-0.2.18/python/cocoindex/functions.py +0 -375
  63. {cocoindex-0.2.18 → cocoindex-0.2.20}/.cargo/config.toml +0 -0
  64. {cocoindex-0.2.18 → cocoindex-0.2.20}/.env.lib_debug +0 -0
  65. {cocoindex-0.2.18 → cocoindex-0.2.20}/.github/ISSUE_TEMPLATE//360/237/220/233-bug-report.md" +0 -0
  66. {cocoindex-0.2.18 → cocoindex-0.2.20}/.github/ISSUE_TEMPLATE//360/237/222/241-feature-request.md" +0 -0
  67. {cocoindex-0.2.18 → cocoindex-0.2.20}/.github/SECURITY.md +0 -0
  68. {cocoindex-0.2.18 → cocoindex-0.2.20}/.github/scripts/update_version.sh +0 -0
  69. {cocoindex-0.2.18 → cocoindex-0.2.20}/.github/workflows/CI.yml +0 -0
  70. {cocoindex-0.2.18 → cocoindex-0.2.20}/.github/workflows/_docs_release.yml +0 -0
  71. {cocoindex-0.2.18 → cocoindex-0.2.20}/.github/workflows/_test.yml +0 -0
  72. {cocoindex-0.2.18 → cocoindex-0.2.20}/.github/workflows/docs_release.yml +0 -0
  73. {cocoindex-0.2.18 → cocoindex-0.2.20}/.github/workflows/docs_test.yml +0 -0
  74. {cocoindex-0.2.18 → cocoindex-0.2.20}/.github/workflows/format.yml +0 -0
  75. {cocoindex-0.2.18 → cocoindex-0.2.20}/.github/workflows/release.yml +0 -0
  76. {cocoindex-0.2.18 → cocoindex-0.2.20}/.gitignore +0 -0
  77. {cocoindex-0.2.18 → cocoindex-0.2.20}/.pre-commit-config.yaml +0 -0
  78. {cocoindex-0.2.18 → cocoindex-0.2.20}/CODE_OF_CONDUCT.md +0 -0
  79. {cocoindex-0.2.18 → cocoindex-0.2.20}/CONTRIBUTING.md +0 -0
  80. {cocoindex-0.2.18 → cocoindex-0.2.20}/LICENSE +0 -0
  81. {cocoindex-0.2.18 → cocoindex-0.2.20}/about.hbs +0 -0
  82. {cocoindex-0.2.18 → cocoindex-0.2.20}/about.toml +0 -0
  83. {cocoindex-0.2.18 → cocoindex-0.2.20}/dev/README.md +0 -0
  84. {cocoindex-0.2.18 → cocoindex-0.2.20}/dev/generate_cli_docs.py +0 -0
  85. {cocoindex-0.2.18 → cocoindex-0.2.20}/dev/neo4j.yaml +0 -0
  86. {cocoindex-0.2.18 → cocoindex-0.2.20}/dev/postgres.yaml +0 -0
  87. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/.gitignore +0 -0
  88. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/README.md +0 -0
  89. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/about/community.md +0 -0
  90. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/contributing/guide.md +0 -0
  91. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/contributing/new_built_in_target.mdx +0 -0
  92. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/contributing/setup_dev_environment.md +0 -0
  93. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/core/basics.md +0 -0
  94. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/core/cli-commands.md +0 -0
  95. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/core/cli.mdx +0 -0
  96. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/core/data_example.svg +0 -0
  97. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/core/data_types.mdx +0 -0
  98. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/core/flow_def.mdx +0 -0
  99. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/core/flow_example.svg +0 -0
  100. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/core/settings.mdx +0 -0
  101. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/custom_ops/custom_functions.mdx +0 -0
  102. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/custom_ops/custom_targets.mdx +0 -0
  103. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/examples/index.md +0 -0
  104. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/getting_started/installation.md +0 -0
  105. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/getting_started/markdown_files.zip +0 -0
  106. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/getting_started/overview.md +0 -0
  107. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/ops/functions.md +0 -0
  108. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/query.mdx +0 -0
  109. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/targets/lancedb.md +0 -0
  110. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/targets/neo4j.md +0 -0
  111. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/targets/postgres.md +0 -0
  112. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/targets/qdrant.md +0 -0
  113. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/tutorials/live_updates.md +0 -0
  114. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docs/tutorials/manage_flow_dynamically.mdx +0 -0
  115. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/docusaurus.config.ts +0 -0
  116. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/package.json +0 -0
  117. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/src/components/GitHubButton/index.tsx +0 -0
  118. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/src/css/custom.css +0 -0
  119. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/src/theme/DocCard/index.tsx +0 -0
  120. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/src/theme/DocCard/styles.module.css +0 -0
  121. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/src/theme/DocCardList/index.tsx +0 -0
  122. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/src/theme/DocCardList/styles.module.css +0 -0
  123. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/src/theme/Root.js +0 -0
  124. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/.nojekyll +0 -0
  125. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/docusaurus.png +0 -0
  126. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/academic_papers_index/abstract_chunks.png +0 -0
  127. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/academic_papers_index/basic_info.png +0 -0
  128. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/academic_papers_index/chunk_embedding.png +0 -0
  129. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/academic_papers_index/cover.png +0 -0
  130. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/academic_papers_index/first_page.png +0 -0
  131. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/academic_papers_index/flow.png +0 -0
  132. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/academic_papers_index/metadata.png +0 -0
  133. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/codebase_index/chunk.png +0 -0
  134. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/codebase_index/cover.png +0 -0
  135. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/codebase_index/flow.png +0 -0
  136. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/custom_targets/convert.png +0 -0
  137. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/custom_targets/cover.png +0 -0
  138. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/docs_to_knowledge_graph/cover.png +0 -0
  139. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/docs_to_knowledge_graph/dedupe.png +0 -0
  140. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/docs_to_knowledge_graph/export_document.png +0 -0
  141. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/docs_to_knowledge_graph/export_relationship.png +0 -0
  142. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/docs_to_knowledge_graph/extract_relationship.png +0 -0
  143. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/docs_to_knowledge_graph/flow.png +0 -0
  144. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/docs_to_knowledge_graph/relationship.png +0 -0
  145. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/docs_to_knowledge_graph/summary.png +0 -0
  146. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/document_ai/cover.png +0 -0
  147. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/document_ai/document_ai.png +0 -0
  148. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/document_ai/processor.png +0 -0
  149. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/image_search/cover.png +0 -0
  150. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/image_search/embedding.png +0 -0
  151. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/image_search/flow.png +0 -0
  152. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/image_search/multi_modal_architecture.png +0 -0
  153. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/image_search/result.png +0 -0
  154. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/manual_extraction/cover.png +0 -0
  155. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/manual_extraction/extraction.png +0 -0
  156. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/manual_extraction/flow.png +0 -0
  157. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/manual_extraction/summary.png +0 -0
  158. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/multi_format_index/colpali_architecture.png +0 -0
  159. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/multi_format_index/cover.png +0 -0
  160. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/multi_format_index/embed.png +0 -0
  161. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/multi_format_index/flow.png +0 -0
  162. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/multi_format_index/pages.png +0 -0
  163. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/patient_form_extraction/cover.png +0 -0
  164. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/patient_form_extraction/extraction.png +0 -0
  165. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/patient_form_extraction/fields.png +0 -0
  166. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/patient_form_extraction/flow.png +0 -0
  167. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/patient_form_extraction/tomarkdown.png +0 -0
  168. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/photo_search/cover.png +0 -0
  169. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/photo_search/extraction.png +0 -0
  170. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/photo_search/flow.png +0 -0
  171. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/postgres_source/collector.png +0 -0
  172. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/postgres_source/cover.png +0 -0
  173. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/postgres_source/description.png +0 -0
  174. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/postgres_source/embed.png +0 -0
  175. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/postgres_source/flow.png +0 -0
  176. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/postgres_source/lineage.png +0 -0
  177. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/postgres_source/price.png +0 -0
  178. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/postgres_source/source.png +0 -0
  179. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/product_recommendation/cover.png +0 -0
  180. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/product_recommendation/dedupe.png +0 -0
  181. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/product_recommendation/export_all.png +0 -0
  182. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/product_recommendation/export_product.png +0 -0
  183. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/product_recommendation/export_taxonomy.png +0 -0
  184. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/product_recommendation/extract_product.png +0 -0
  185. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/product_recommendation/extract_taxonomy.png +0 -0
  186. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/product_recommendation/neo4j.png +0 -0
  187. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/product_recommendation/parse_json.png +0 -0
  188. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/product_recommendation/taxonomy.png +0 -0
  189. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/simple_vector_index/chunk.png +0 -0
  190. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/simple_vector_index/cover.png +0 -0
  191. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/simple_vector_index/embed.png +0 -0
  192. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/examples/simple_vector_index/flow.png +0 -0
  193. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/favicon.ico +0 -0
  194. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/icon.svg +0 -0
  195. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/img/incremental-etl.gif +0 -0
  196. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/static/robots.txt +0 -0
  197. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/tsconfig.json +0 -0
  198. {cocoindex-0.2.18 → cocoindex-0.2.20}/docs/yarn.lock +0 -0
  199. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/amazon_s3_embedding/.env.example +0 -0
  200. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/amazon_s3_embedding/.gitignore +0 -0
  201. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/amazon_s3_embedding/main.py +0 -0
  202. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/amazon_s3_embedding/pyproject.toml +0 -0
  203. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/azure_blob_embedding/.env.example +0 -0
  204. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/azure_blob_embedding/.gitignore +0 -0
  205. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/azure_blob_embedding/main.py +0 -0
  206. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/azure_blob_embedding/pyproject.toml +0 -0
  207. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/code_embedding/.env +0 -0
  208. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/code_embedding/README.md +0 -0
  209. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/code_embedding/pyproject.toml +0 -0
  210. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/custom_output_files/.env +0 -0
  211. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/custom_output_files/.gitignore +0 -0
  212. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/custom_output_files/README.md +0 -0
  213. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/custom_output_files/data/bizarre_animals.md +0 -0
  214. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/custom_output_files/data/chunk_norris.md +0 -0
  215. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/custom_output_files/main.py +0 -0
  216. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/custom_output_files/pyproject.toml +0 -0
  217. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/docs_to_knowledge_graph/.env +0 -0
  218. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/docs_to_knowledge_graph/pyproject.toml +0 -0
  219. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/face_recognition/.env +0 -0
  220. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/face_recognition/README.md +0 -0
  221. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/face_recognition/images/Carter_welcomes_Reagan.jpg +0 -0
  222. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/face_recognition/images/Solvay_conference_1927.jpg +0 -0
  223. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/face_recognition/images/Steve_Jobs_and_Bill_Gates_(522695099).jpg +0 -0
  224. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/face_recognition/images/einplanck3.jpg +0 -0
  225. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/face_recognition/main.py +0 -0
  226. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/face_recognition/pyproject.toml +0 -0
  227. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/fastapi_server_docker/.dockerignore +0 -0
  228. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/fastapi_server_docker/.env +0 -0
  229. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/fastapi_server_docker/README.md +0 -0
  230. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/fastapi_server_docker/compose.yaml +0 -0
  231. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/fastapi_server_docker/dockerfile +0 -0
  232. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/fastapi_server_docker/files/1810.04805v2.md +0 -0
  233. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/fastapi_server_docker/main.py +0 -0
  234. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/fastapi_server_docker/requirements.txt +0 -0
  235. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/gdrive_text_embedding/.env.example +0 -0
  236. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/gdrive_text_embedding/.gitignore +0 -0
  237. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/gdrive_text_embedding/main.py +0 -0
  238. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/gdrive_text_embedding/pyproject.toml +0 -0
  239. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/.env +0 -0
  240. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/README.md +0 -0
  241. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/colpali_main.py +0 -0
  242. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/frontend/.gitignore +0 -0
  243. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/frontend/index.html +0 -0
  244. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/frontend/package-lock.json +0 -0
  245. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/frontend/package.json +0 -0
  246. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/frontend/src/App.jsx +0 -0
  247. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/frontend/src/main.jsx +0 -0
  248. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/frontend/src/style.css +0 -0
  249. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/frontend/vite.config.js +0 -0
  250. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/img/cat1.jpeg +0 -0
  251. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/img/dog1.jpeg +0 -0
  252. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/img/elephant1.jpg +0 -0
  253. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/img/giraffe.jpg +0 -0
  254. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/main.py +0 -0
  255. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/image_search/pyproject.toml +0 -0
  256. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/live_updates/.env +0 -0
  257. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/live_updates/README.md +0 -0
  258. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/live_updates/data/bizarre_animals.md +0 -0
  259. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/live_updates/data/chunk_norris.md +0 -0
  260. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/live_updates/main.py +0 -0
  261. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/live_updates/pyproject.toml +0 -0
  262. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/manuals_llm_extraction/.env +0 -0
  263. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/manuals_llm_extraction/README.md +0 -0
  264. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/manuals_llm_extraction/manuals/array.pdf +0 -0
  265. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/manuals_llm_extraction/manuals/base64.pdf +0 -0
  266. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/manuals_llm_extraction/manuals/copy.pdf +0 -0
  267. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/manuals_llm_extraction/manuals/glob.pdf +0 -0
  268. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/manuals_llm_extraction/pyproject.toml +0 -0
  269. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/multi_format_indexing/.env +0 -0
  270. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/multi_format_indexing/README.md +0 -0
  271. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/multi_format_indexing/main.py +0 -0
  272. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/multi_format_indexing/pyproject.toml +0 -0
  273. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/multi_format_indexing/source_files/1706.03762v7.pdf +0 -0
  274. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/multi_format_indexing/source_files/1810.04805v2.pdf +0 -0
  275. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/multi_format_indexing/source_files/2502.06786v3.pdf +0 -0
  276. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/multi_format_indexing/source_files/healthcare_industry_test_p101.jpg +0 -0
  277. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/multi_format_indexing/source_files/healthcare_industry_test_p86.jpg +0 -0
  278. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/multi_format_indexing/source_files/healthcare_industry_test_p9.jpg +0 -0
  279. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/multi_format_indexing/source_files/restaurant_brands_international_2023.jpg +0 -0
  280. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/multi_format_indexing/source_files/sweetgreen_2023.jpg +0 -0
  281. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/paper_metadata/.env.example +0 -0
  282. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/paper_metadata/.gitignore +0 -0
  283. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/paper_metadata/README.md +0 -0
  284. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/paper_metadata/main.py +0 -0
  285. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/paper_metadata/papers/1706.03762v7.pdf +0 -0
  286. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/paper_metadata/papers/1810.04805v2.pdf +0 -0
  287. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/paper_metadata/papers/2502.06786v3.pdf +0 -0
  288. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/paper_metadata/papers/2502.20346v1.pdf +0 -0
  289. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/paper_metadata/pyproject.toml +0 -0
  290. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/patient_intake_extraction/.env.example +0 -0
  291. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/patient_intake_extraction/data/README.md +0 -0
  292. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_David_Artificial.docx +0 -0
  293. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_Emily_Artificial.pdf +0 -0
  294. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_Joe_Artificial.pdf +0 -0
  295. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_From_Jane_Artificial.docx +0 -0
  296. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/patient_intake_extraction/main.py +0 -0
  297. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/patient_intake_extraction/pyproject.toml +0 -0
  298. {cocoindex-0.2.18/examples/pdf_embedding → cocoindex-0.2.20/examples/pdf_elements_embedding}/.env +0 -0
  299. {cocoindex-0.2.18/examples/text_embedding → cocoindex-0.2.20/examples/pdf_embedding}/.env +0 -0
  300. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/pdf_embedding/README.md +0 -0
  301. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/pdf_embedding/main.py +0 -0
  302. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/pdf_embedding/pdf_files/1706.03762v7.pdf +0 -0
  303. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/pdf_embedding/pdf_files/1810.04805v2.pdf +0 -0
  304. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/pdf_embedding/pdf_files/rfc8259.pdf +0 -0
  305. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/pdf_embedding/pyproject.toml +0 -0
  306. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/postgres_source/.env +0 -0
  307. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/postgres_source/README.md +0 -0
  308. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/postgres_source/main.py +0 -0
  309. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/postgres_source/prepare_source_data.sql +0 -0
  310. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/postgres_source/pyproject.toml +0 -0
  311. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/.env.example +0 -0
  312. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/.gitignore +0 -0
  313. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/img/cocoinsight.png +0 -0
  314. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/img/neo4j.png +0 -0
  315. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/products/p1.json +0 -0
  316. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/products/p2.json +0 -0
  317. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/products/p3.json +0 -0
  318. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/products/p4.json +0 -0
  319. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/products/p5.json +0 -0
  320. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/products/p6.json +0 -0
  321. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/products/p7.json +0 -0
  322. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/products/p8.json +0 -0
  323. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/products/p9.json +0 -0
  324. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/product_recommendation/pyproject.toml +0 -0
  325. {cocoindex-0.2.18/examples/text_embedding_lancedb → cocoindex-0.2.20/examples/text_embedding}/.env +0 -0
  326. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding/README.md +0 -0
  327. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding/Text_Embedding.ipynb +0 -0
  328. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding/main.py +0 -0
  329. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding/markdown_files/1706.03762v7.md +0 -0
  330. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding/markdown_files/1810.04805v2.md +0 -0
  331. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding/markdown_files/rfc8259.md +0 -0
  332. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding/pyproject.toml +0 -0
  333. {cocoindex-0.2.18/examples/text_embedding_qdrant → cocoindex-0.2.20/examples/text_embedding_lancedb}/.env +0 -0
  334. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding_lancedb/.gitignore +0 -0
  335. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding_lancedb/README.md +0 -0
  336. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding_lancedb/main.py +0 -0
  337. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding_lancedb/markdown_files/rfc8259.md +0 -0
  338. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding_lancedb/pyproject.toml +0 -0
  339. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding_qdrant/main.py +0 -0
  340. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding_qdrant/markdown_files/rfc8259.md +0 -0
  341. {cocoindex-0.2.18 → cocoindex-0.2.20}/examples/text_embedding_qdrant/pyproject.toml +0 -0
  342. {cocoindex-0.2.18 → cocoindex-0.2.20}/pyproject.toml +0 -0
  343. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/__init__.py +0 -0
  344. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/auth_registry.py +0 -0
  345. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/cli.py +0 -0
  346. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/engine_object.py +0 -0
  347. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/engine_value.py +0 -0
  348. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/flow.py +0 -0
  349. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/functions/__init__.py +0 -0
  350. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/functions/_engine_builtin_specs.py +0 -0
  351. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/functions/colpali.py +0 -0
  352. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/functions/sbert.py +0 -0
  353. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/index.py +0 -0
  354. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/lib.py +0 -0
  355. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/op.py +0 -0
  356. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/py.typed +0 -0
  357. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/query_handler.py +0 -0
  358. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/runtime.py +0 -0
  359. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/setting.py +0 -0
  360. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/setup.py +0 -0
  361. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/sources/__init__.py +0 -0
  362. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/subprocess_exec.py +0 -0
  363. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/targets/__init__.py +0 -0
  364. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/targets/_engine_builtin_specs.py +0 -0
  365. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/targets/lancedb.py +0 -0
  366. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/tests/__init__.py +0 -0
  367. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/tests/test_engine_object.py +0 -0
  368. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/tests/test_engine_value.py +0 -0
  369. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/tests/test_optional_database.py +0 -0
  370. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/tests/test_transform_flow.py +0 -0
  371. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/tests/test_typing.py +0 -0
  372. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/tests/test_validation.py +0 -0
  373. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/typing.py +0 -0
  374. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/user_app_loader.py +0 -0
  375. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/utils.py +0 -0
  376. {cocoindex-0.2.18 → cocoindex-0.2.20}/python/cocoindex/validation.py +0 -0
  377. {cocoindex-0.2.18 → cocoindex-0.2.20}/ruff.toml +0 -0
  378. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/base/duration.rs +0 -0
  379. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/base/field_attrs.rs +0 -0
  380. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/base/json_schema.rs +0 -0
  381. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/base/mod.rs +0 -0
  382. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/base/schema.rs +0 -0
  383. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/base/value.rs +0 -0
  384. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/builder/analyzed_flow.rs +0 -0
  385. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/builder/exec_ctx.rs +0 -0
  386. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/builder/flow_builder.rs +0 -0
  387. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/builder/mod.rs +0 -0
  388. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/execution/db_tracking.rs +0 -0
  389. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/execution/db_tracking_setup.rs +0 -0
  390. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/execution/dumper.rs +0 -0
  391. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/execution/evaluator.rs +0 -0
  392. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/execution/live_updater.rs +0 -0
  393. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/execution/memoization.rs +0 -0
  394. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/execution/mod.rs +0 -0
  395. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/execution/stats.rs +0 -0
  396. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/lib.rs +0 -0
  397. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/lib_context.rs +0 -0
  398. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/llm/anthropic.rs +0 -0
  399. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/llm/gemini.rs +0 -0
  400. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/llm/litellm.rs +0 -0
  401. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/llm/ollama.rs +0 -0
  402. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/llm/openai.rs +0 -0
  403. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/llm/openrouter.rs +0 -0
  404. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/llm/vllm.rs +0 -0
  405. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/llm/voyage.rs +0 -0
  406. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/factory_bases.rs +0 -0
  407. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/functions/detect_program_lang.rs +0 -0
  408. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/functions/embed_text.rs +0 -0
  409. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/functions/extract_by_llm.rs +0 -0
  410. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/functions/mod.rs +0 -0
  411. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/functions/parse_json.rs +0 -0
  412. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/functions/split_by_separators.rs +0 -0
  413. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/functions/split_recursively.rs +0 -0
  414. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/functions/test_utils.rs +0 -0
  415. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/interface.rs +0 -0
  416. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/mod.rs +0 -0
  417. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/py_factory.rs +0 -0
  418. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/registration.rs +0 -0
  419. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/registry.rs +0 -0
  420. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/sdk.rs +0 -0
  421. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/shared/mod.rs +0 -0
  422. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/shared/postgres.rs +0 -0
  423. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/shared/program_langs.rs +0 -0
  424. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/shared/split.rs +0 -0
  425. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/sources/amazon_s3.rs +0 -0
  426. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/sources/azure_blob.rs +0 -0
  427. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/sources/google_drive.rs +0 -0
  428. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/sources/local_file.rs +0 -0
  429. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/sources/mod.rs +0 -0
  430. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/sources/shared/mod.rs +0 -0
  431. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/sources/shared/pattern_matcher.rs +0 -0
  432. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/targets/kuzu.rs +0 -0
  433. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/targets/mod.rs +0 -0
  434. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/targets/postgres.rs +0 -0
  435. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/targets/qdrant.rs +0 -0
  436. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/targets/shared/mod.rs +0 -0
  437. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/targets/shared/property_graph.rs +0 -0
  438. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/ops/targets/shared/table_columns.rs +0 -0
  439. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/prelude.rs +0 -0
  440. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/py/convert.rs +0 -0
  441. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/py/mod.rs +0 -0
  442. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/server.rs +0 -0
  443. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/service/error.rs +0 -0
  444. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/service/flows.rs +0 -0
  445. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/service/mod.rs +0 -0
  446. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/service/query_handler.rs +0 -0
  447. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/settings.rs +0 -0
  448. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/setup/auth_registry.rs +0 -0
  449. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/setup/components.rs +0 -0
  450. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/setup/db_metadata.rs +0 -0
  451. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/setup/driver.rs +0 -0
  452. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/setup/flow_features.rs +0 -0
  453. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/setup/mod.rs +0 -0
  454. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/setup/states.rs +0 -0
  455. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/utils/concur_control.rs +0 -0
  456. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/utils/db.rs +0 -0
  457. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/utils/deser.rs +0 -0
  458. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/utils/immutable.rs +0 -0
  459. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/utils/mod.rs +0 -0
  460. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/utils/retryable.rs +0 -0
  461. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/utils/str_sanitize.rs +0 -0
  462. {cocoindex-0.2.18 → cocoindex-0.2.20}/src/utils/yaml_ser.rs +0 -0
@@ -1283,7 +1283,7 @@ dependencies = [
1283
1283
 
1284
1284
  [[package]]
1285
1285
  name = "cocoindex"
1286
- version = "0.2.18"
1286
+ version = "0.2.20"
1287
1287
  dependencies = [
1288
1288
  "anyhow",
1289
1289
  "async-openai",
@@ -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.18"
5
+ version = "0.2.20"
6
6
  edition = "2024"
7
7
  rust-version = "1.89"
8
8
  license = "Apache-2.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cocoindex
3
- Version: 0.2.18
3
+ Version: 0.2.20
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: License :: OSI Approved :: Apache Software License
6
6
  Classifier: Operating System :: OS Independent
@@ -75,7 +75,6 @@ Project-URL: Homepage, https://cocoindex.io/
75
75
  <a href="https://trendshift.io/repositories/13939" target="_blank"><img src="https://trendshift.io/api/badge/repositories/13939" alt="cocoindex-io%2Fcocoindex | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
76
76
  </div>
77
77
 
78
-
79
78
  Ultra performant data transformation framework for AI, with core engine written in Rust. Support incremental processing and data lineage out-of-box. Exceptional developer velocity. Production-ready at day 0.
80
79
 
81
80
  ⭐ Drop a star to help us grow!
@@ -113,9 +112,8 @@ CocoIndex makes it effortless to transform data with AI, and keep source data an
113
112
 
114
113
  </br>
115
114
 
116
-
117
-
118
115
  ## Exceptional velocity
116
+
119
117
  Just declare transformation in dataflow with ~100 lines of python
120
118
 
121
119
  ```python
@@ -139,6 +137,7 @@ CocoIndex follows the idea of [Dataflow](https://en.wikipedia.org/wiki/Dataflow_
139
137
  **Particularly**, developers don't explicitly mutate data by creating, updating and deleting. They just need to define transformation/formula for a set of source data.
140
138
 
141
139
  ## Plug-and-Play Building Blocks
140
+
142
141
  Native builtins for different source, targets and transformations. Standardize interface, make it 1-line code switch between different components - as easy as assembling building blocks.
143
142
 
144
143
  <p align="center">
@@ -146,6 +145,7 @@ Native builtins for different source, targets and transformations. Standardize i
146
145
  </p>
147
146
 
148
147
  ## Data Freshness
148
+
149
149
  CocoIndex keep source data and target in sync effortlessly.
150
150
 
151
151
  <p align="center">
@@ -153,11 +153,14 @@ CocoIndex keep source data and target in sync effortlessly.
153
153
  </p>
154
154
 
155
155
  It has out-of-box support for incremental indexing:
156
+
156
157
  - minimal recomputation on source or logic change.
157
158
  - (re-)processing necessary portions; reuse cache when possible
158
159
 
159
- ## Quick Start:
160
+ ## Quick Start
161
+
160
162
  If you're new to CocoIndex, we recommend checking out
163
+
161
164
  - 📖 [Documentation](https://cocoindex.io/docs)
162
165
  - ⚡ [Quick Start Guide](https://cocoindex.io/docs/getting_started/quickstart)
163
166
  - 🎬 [Quick Start Video Tutorial](https://youtu.be/gv5R8nOXsWU?si=9ioeKYkMEnYevTXT)
@@ -172,7 +175,6 @@ pip install -U cocoindex
172
175
 
173
176
  2. [Install Postgres](https://cocoindex.io/docs/getting_started/installation#-install-postgres) if you don't have one. CocoIndex uses it for incremental processing.
174
177
 
175
-
176
178
  ## Define data flow
177
179
 
178
180
  Follow [Quick Start Guide](https://cocoindex.io/docs/getting_started/quickstart) to define your first indexing flow. An example flow looks like:
@@ -228,6 +230,7 @@ It defines an index flow like this:
228
230
  | [Text Embedding](examples/text_embedding) | Index text documents with embeddings for semantic search |
229
231
  | [Code Embedding](examples/code_embedding) | Index code embeddings for semantic search |
230
232
  | [PDF Embedding](examples/pdf_embedding) | Parse PDF and index text embeddings for semantic search |
233
+ | [PDF Elements Embedding](examples/pdf_elements_embedding) | Extract text and images from PDFs; embed text with SentenceTransformers and images with CLIP; store in Qdrant for multimodal search |
231
234
  | [Manuals LLM Extraction](examples/manuals_llm_extraction) | Extract structured information from a manual using LLM |
232
235
  | [Amazon S3 Embedding](examples/amazon_s3_embedding) | Index text documents from Amazon S3 |
233
236
  | [Azure Blob Storage Embedding](examples/azure_blob_embedding) | Index text documents from Azure Blob Storage |
@@ -244,16 +247,18 @@ It defines an index flow like this:
244
247
  | [Custom Output Files](examples/custom_output_files) | Convert markdown files to HTML files and save them to a local directory, using *CocoIndex Custom Targets* |
245
248
  | [Patient intake form extraction](examples/patient_intake_extraction) | Use LLM to extract structured data from patient intake forms with different formats |
246
249
 
247
-
248
250
  More coming and stay tuned 👀!
249
251
 
250
252
  ## 📖 Documentation
253
+
251
254
  For detailed documentation, visit [CocoIndex Documentation](https://cocoindex.io/docs), including a [Quickstart guide](https://cocoindex.io/docs/getting_started/quickstart).
252
255
 
253
256
  ## 🤝 Contributing
257
+
254
258
  We love contributions from our community ❤️. For details on contributing or running the project for development, check out our [contributing guide](https://cocoindex.io/docs/about/contributing).
255
259
 
256
260
  ## 👥 Community
261
+
257
262
  Welcome with a huge coconut hug 🥥⋆。˚🤗. We are super excited for community contributions of all kinds - whether it's code improvements, documentation updates, issue reports, feature requests, and discussions in our Discord.
258
263
 
259
264
  Join our community here:
@@ -263,9 +268,11 @@ Join our community here:
263
268
  - ▶️ [Subscribe to our YouTube channel](https://www.youtube.com/@cocoindex-io)
264
269
  - 📜 [Read our blog posts](https://cocoindex.io/blogs/)
265
270
 
266
- ## Support us:
271
+ ## Support us
272
+
267
273
  We are constantly improving, and more features and examples are coming soon. If you love this project, please drop us a star ⭐ at GitHub repo [![GitHub](https://img.shields.io/github/stars/cocoindex-io/cocoindex?color=5B5BD6)](https://github.com/cocoindex-io/cocoindex) to stay tuned and help us grow.
268
274
 
269
275
  ## License
276
+
270
277
  CocoIndex is Apache 2.0 licensed.
271
278
 
@@ -22,7 +22,6 @@
22
22
  <a href="https://trendshift.io/repositories/13939" target="_blank"><img src="https://trendshift.io/api/badge/repositories/13939" alt="cocoindex-io%2Fcocoindex | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
23
23
  </div>
24
24
 
25
-
26
25
  Ultra performant data transformation framework for AI, with core engine written in Rust. Support incremental processing and data lineage out-of-box. Exceptional developer velocity. Production-ready at day 0.
27
26
 
28
27
  ⭐ Drop a star to help us grow!
@@ -60,9 +59,8 @@ CocoIndex makes it effortless to transform data with AI, and keep source data an
60
59
 
61
60
  </br>
62
61
 
63
-
64
-
65
62
  ## Exceptional velocity
63
+
66
64
  Just declare transformation in dataflow with ~100 lines of python
67
65
 
68
66
  ```python
@@ -86,6 +84,7 @@ CocoIndex follows the idea of [Dataflow](https://en.wikipedia.org/wiki/Dataflow_
86
84
  **Particularly**, developers don't explicitly mutate data by creating, updating and deleting. They just need to define transformation/formula for a set of source data.
87
85
 
88
86
  ## Plug-and-Play Building Blocks
87
+
89
88
  Native builtins for different source, targets and transformations. Standardize interface, make it 1-line code switch between different components - as easy as assembling building blocks.
90
89
 
91
90
  <p align="center">
@@ -93,6 +92,7 @@ Native builtins for different source, targets and transformations. Standardize i
93
92
  </p>
94
93
 
95
94
  ## Data Freshness
95
+
96
96
  CocoIndex keep source data and target in sync effortlessly.
97
97
 
98
98
  <p align="center">
@@ -100,11 +100,14 @@ CocoIndex keep source data and target in sync effortlessly.
100
100
  </p>
101
101
 
102
102
  It has out-of-box support for incremental indexing:
103
+
103
104
  - minimal recomputation on source or logic change.
104
105
  - (re-)processing necessary portions; reuse cache when possible
105
106
 
106
- ## Quick Start:
107
+ ## Quick Start
108
+
107
109
  If you're new to CocoIndex, we recommend checking out
110
+
108
111
  - 📖 [Documentation](https://cocoindex.io/docs)
109
112
  - ⚡ [Quick Start Guide](https://cocoindex.io/docs/getting_started/quickstart)
110
113
  - 🎬 [Quick Start Video Tutorial](https://youtu.be/gv5R8nOXsWU?si=9ioeKYkMEnYevTXT)
@@ -119,7 +122,6 @@ pip install -U cocoindex
119
122
 
120
123
  2. [Install Postgres](https://cocoindex.io/docs/getting_started/installation#-install-postgres) if you don't have one. CocoIndex uses it for incremental processing.
121
124
 
122
-
123
125
  ## Define data flow
124
126
 
125
127
  Follow [Quick Start Guide](https://cocoindex.io/docs/getting_started/quickstart) to define your first indexing flow. An example flow looks like:
@@ -175,6 +177,7 @@ It defines an index flow like this:
175
177
  | [Text Embedding](examples/text_embedding) | Index text documents with embeddings for semantic search |
176
178
  | [Code Embedding](examples/code_embedding) | Index code embeddings for semantic search |
177
179
  | [PDF Embedding](examples/pdf_embedding) | Parse PDF and index text embeddings for semantic search |
180
+ | [PDF Elements Embedding](examples/pdf_elements_embedding) | Extract text and images from PDFs; embed text with SentenceTransformers and images with CLIP; store in Qdrant for multimodal search |
178
181
  | [Manuals LLM Extraction](examples/manuals_llm_extraction) | Extract structured information from a manual using LLM |
179
182
  | [Amazon S3 Embedding](examples/amazon_s3_embedding) | Index text documents from Amazon S3 |
180
183
  | [Azure Blob Storage Embedding](examples/azure_blob_embedding) | Index text documents from Azure Blob Storage |
@@ -191,16 +194,18 @@ It defines an index flow like this:
191
194
  | [Custom Output Files](examples/custom_output_files) | Convert markdown files to HTML files and save them to a local directory, using *CocoIndex Custom Targets* |
192
195
  | [Patient intake form extraction](examples/patient_intake_extraction) | Use LLM to extract structured data from patient intake forms with different formats |
193
196
 
194
-
195
197
  More coming and stay tuned 👀!
196
198
 
197
199
  ## 📖 Documentation
200
+
198
201
  For detailed documentation, visit [CocoIndex Documentation](https://cocoindex.io/docs), including a [Quickstart guide](https://cocoindex.io/docs/getting_started/quickstart).
199
202
 
200
203
  ## 🤝 Contributing
204
+
201
205
  We love contributions from our community ❤️. For details on contributing or running the project for development, check out our [contributing guide](https://cocoindex.io/docs/about/contributing).
202
206
 
203
207
  ## 👥 Community
208
+
204
209
  Welcome with a huge coconut hug 🥥⋆。˚🤗. We are super excited for community contributions of all kinds - whether it's code improvements, documentation updates, issue reports, feature requests, and discussions in our Discord.
205
210
 
206
211
  Join our community here:
@@ -210,8 +215,10 @@ Join our community here:
210
215
  - ▶️ [Subscribe to our YouTube channel](https://www.youtube.com/@cocoindex-io)
211
216
  - 📜 [Read our blog posts](https://cocoindex.io/blogs/)
212
217
 
213
- ## Support us:
218
+ ## Support us
219
+
214
220
  We are constantly improving, and more features and examples are coming soon. If you love this project, please drop us a star ⭐ at GitHub repo [![GitHub](https://img.shields.io/github/stars/cocoindex-io/cocoindex?color=5B5BD6)](https://github.com/cocoindex-io/cocoindex) to stay tuned and help us grow.
215
221
 
216
222
  ## License
223
+
217
224
  CocoIndex is Apache 2.0 licensed.
@@ -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.18</a></li>
2431
+ <li><a href=" https://crates.io/crates/cocoindex ">cocoindex 0.2.20</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>
@@ -28,6 +28,7 @@ We support the following types of LLM APIs:
28
28
  | [LiteLLM](#litellm) | `LlmApiType.LITE_LLM` | ✅ | ❌ |
29
29
  | [OpenRouter](#openrouter) | `LlmApiType.OPEN_ROUTER` | ✅ | ❌ |
30
30
  | [vLLM](#vllm) | `LlmApiType.VLLM` | ✅ | ❌ |
31
+ | [Bedrock](#bedrock) | `LlmApiType.BEDROCK` | ✅ | ❌ |
31
32
 
32
33
  ## LLM Tasks
33
34
 
@@ -440,3 +441,28 @@ cocoindex.LlmSpec(
440
441
 
441
442
  </TabItem>
442
443
  </Tabs>
444
+
445
+ ### Bedrock
446
+
447
+ To use the Bedrock API, you need to set up AWS credentials. You can do this by setting the following environment variables:
448
+
449
+ - `AWS_ACCESS_KEY_ID`
450
+ - `AWS_SECRET_ACCESS_KEY`
451
+ - `AWS_SESSION_TOKEN` (optional)
452
+
453
+ A spec for Bedrock looks like this:
454
+
455
+ <Tabs>
456
+ <TabItem value="python" label="Python" default>
457
+
458
+ ```python
459
+ cocoindex.LlmSpec(
460
+ api_type=cocoindex.LlmApiType.BEDROCK,
461
+ model="us.anthropic.claude-3-5-haiku-20241022-v1:0",
462
+ )
463
+ ```
464
+
465
+ </TabItem>
466
+ </Tabs>
467
+
468
+ You can find the full list of models supported by Bedrock [here](https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html).
@@ -210,7 +210,7 @@ A data source may enable one or multiple *change capture mechanisms*:
210
210
  * Configured with a [refresh interval](flow_def#refresh-interval), which is generally applicable to all data sources.
211
211
 
212
212
  * Specific data sources also provide their specific change capture mechanisms.
213
- For example, [`Postgres` source](../sources/#postgres) listens to PostgreSQL's change notifications, [`AmazonS3` source](../sources/#amazons3) watches S3 bucket's change events, and [`GoogleDrive` source](../sources#googledrive) allows polling recent modified files.
213
+ For example, [`Postgres` source](../sources/postgres) listens to PostgreSQL's change notifications, [`AmazonS3` source](../sources/amazons3) watches S3 bucket's change events, and [`GoogleDrive` source](../sources/googledrive) allows polling recent modified files.
214
214
  See documentations for specific data sources.
215
215
 
216
216
  Change capture mechanisms enable CocoIndex to continuously capture changes from the source data and update the target data accordingly, under live update mode.
@@ -64,7 +64,7 @@ def paper_metadata_flow(
64
64
  ```
65
65
 
66
66
  `flow_builder.add_source` will create a table with sub fields (`filename`, `content`).
67
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
67
+ <DocumentationButton url="https://cocoindex.io/docs/sources" text="Sources" margin="0 0 16px 0" />
68
68
 
69
69
  ## Extract and collect metadata
70
70
 
@@ -70,7 +70,7 @@ def code_embedding_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoind
70
70
  - Exclude files and directories starting `.`, `target` in the root and `node_modules` under any directory.
71
71
 
72
72
  `flow_builder.add_source` will create a table with sub fields (`filename`, `content`).
73
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" />
73
+ <DocumentationButton url="https://cocoindex.io/docs/sources" text="Sources" />
74
74
 
75
75
 
76
76
  ## Process each file and collect the information
@@ -36,7 +36,7 @@ flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.DataScope
36
36
  )
37
37
  ```
38
38
  This ingestion creates a table with `filename` and `content` fields.
39
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" />
39
+ <DocumentationButton url="https://cocoindex.io/docs/sources" text="Sources" />
40
40
 
41
41
  ## Process each file and collect
42
42
 
@@ -66,7 +66,7 @@ def docs_to_kg_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.D
66
66
  Here `flow_builder.add_source` creates a [KTable](https://cocoindex.io/docs/core/data_types#KTable).
67
67
  `filename` is the key of the KTable.
68
68
 
69
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
69
+ <DocumentationButton url="https://cocoindex.io/docs/sources" text="Sources" margin="0 0 16px 0" />
70
70
 
71
71
 
72
72
  ### Add data collectors
@@ -98,7 +98,7 @@ data_scope["documents"] = flow_builder.add_source(
98
98
  doc_embeddings = data_scope.add_collector()
99
99
  ```
100
100
 
101
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Source" margin="0 0 16px 0" />
101
+ <DocumentationButton url="https://cocoindex.io/docs/sources" text="Source" margin="0 0 16px 0" />
102
102
 
103
103
  <DocumentationButton url="https://cocoindex.io/docs/ops/collectors" text="Collector" margin="0 0 16px 0" />
104
104
 
@@ -154,4 +154,4 @@ For a step-by-step walkthrough of each indexing stage and the query path, check
154
154
 
155
155
  CocoIndex natively supports Google Drive, Amazon S3, Azure Blob Storage, and more with native incremental processing out of box - when new or updated files are detected, the pipeline will capture the changes and only process what's changed.
156
156
 
157
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
157
+ <DocumentationButton url="https://cocoindex.io/docs/sources" text="Sources" margin="0 0 16px 0" />
@@ -66,7 +66,7 @@ def image_object_embedding_flow(flow_builder, data_scope):
66
66
 
67
67
  The `add_source` function sets up a table with fields like `filename` and `content`. Images are automatically re-scanned every minute.
68
68
 
69
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources#localfile" text="LocalFile" />
69
+ <DocumentationButton url="https://cocoindex.io/docs/sources/localfile" text="LocalFile" />
70
70
 
71
71
 
72
72
  ## Process Each Image and Collect the Embedding
@@ -266,6 +266,6 @@ One of CocoIndex’s core strengths is its ability to connect to your existing d
266
266
  - Amazon S3 / SQS
267
267
  - Azure Blob Storage
268
268
 
269
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
269
+ <DocumentationButton url="https://cocoindex.io/docs/sources" text="Sources" margin="0 0 16px 0" />
270
270
 
271
271
  Once connected, CocoIndex continuously watches for changes — new uploads, updates, or deletions — and applies them to your index in real time.
@@ -67,7 +67,7 @@ def manual_extraction_flow(
67
67
  - `filename` (key, type: `str`): the filename of the file, e.g. `dir1/file1.md`
68
68
  - `content` (type: `str` if `binary` is `False`, otherwise `bytes`): the content of the file
69
69
 
70
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="LocalFile" margin="0 0 16px 0" />
70
+ <DocumentationButton url="https://cocoindex.io/docs/sources" text="LocalFile" margin="0 0 16px 0" />
71
71
 
72
72
  ## Parse Markdown
73
73
 
@@ -52,7 +52,7 @@ data_scope["documents"] = flow_builder.add_source(
52
52
  cocoindex.sources.LocalFile(path="source_files", binary=True)
53
53
  )
54
54
  ```
55
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources#localfile" text="LocalFile" margin="0 0 16px 0" />
55
+ <DocumentationButton url="https://cocoindex.io/docs/sources/localfile" text="LocalFile" margin="0 0 16px 0" />
56
56
 
57
57
 
58
58
  ## Convert Files to Pages
@@ -203,4 +203,4 @@ Follow the url `https://cocoindex.io/cocoinsight`. It connects to your local Co
203
203
  ## Connect to other sources
204
204
  CocoIndex natively supports Google Drive, Amazon S3, Azure Blob Storage, and more.
205
205
 
206
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
206
+ <DocumentationButton url="https://cocoindex.io/docs/sources" text="Sources" margin="0 0 16px 0" />
@@ -66,7 +66,7 @@ def patient_intake_extraction_flow(
66
66
 
67
67
  `flow_builder.add_source` will create a table with a few sub fields.
68
68
 
69
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
69
+ <DocumentationButton url="https://cocoindex.io/docs/sources" text="Sources" margin="0 0 16px 0" />
70
70
 
71
71
 
72
72
  ## Parse documents with different formats to Markdown
@@ -298,4 +298,4 @@ Click on the `markdown` column for `Patient_Intake_Form_Joe.pdf`, you could see
298
298
  ## Connect to other sources
299
299
  CocoIndex natively supports Google Drive, Amazon S3, Azure Blob Storage, and more.
300
300
 
301
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
301
+ <DocumentationButton url="https://cocoindex.io/docs/sources" text="Sources" margin="0 0 16px 0" />
@@ -65,8 +65,8 @@ def face_recognition_flow(flow_builder, data_scope):
65
65
  This creates a table with `filename` and `content` fields. 📂
66
66
 
67
67
 
68
- You can connect it to your [S3 Buckets](https://cocoindex.io/docs/ops/sources#amazons3) (with SQS integration, [example](https://cocoindex.io/blogs/s3-incremental-etl))
69
- or [Azure Blob store](https://cocoindex.io/docs/ops/sources#azureblob).
68
+ You can connect it to your [S3 Buckets](https://cocoindex.io/docs/sources/amazons3) (with SQS integration, [example](https://cocoindex.io/blogs/s3-incremental-etl))
69
+ or [Azure Blob store](https://cocoindex.io/docs/sources/azureblob).
70
70
 
71
71
  ## Detect and Extract Faces
72
72
 
@@ -59,7 +59,7 @@ CocoIndex incrementally sync data from Postgres. When new or updated rows are fo
59
59
  - `notification` enables change capture based on Postgres LISTEN/NOTIFY. Each change triggers an incremental processing on the specific row immediately.
60
60
  - Regardless if `notification` is provided or not, CocoIndex still needs to scan the full table to detect changes in some scenarios (e.g. between two `update` invocation), and the `ordinal_column` provides a field that CocoIndex can use to quickly detect which row has changed without reading value columns.
61
61
 
62
- Check [Postgres source](https://cocoindex.io/docs/ops/sources#postgres) for more details.
62
+ Check [Postgres source](https://cocoindex.io/docs/sources/postgres) for more details.
63
63
 
64
64
  If you use the Postgres database hosted by Supabase, please click Connect on your project dashboard and find the URL there. Check [DatabaseConnectionSpec](https://cocoindex.io/docs/core/settings#databaseconnectionspec)
65
65
  for more details.
@@ -30,7 +30,7 @@ Product taxonomy is a way to organize product catalogs in a logical and hierarch
30
30
 
31
31
  ## Prerequisites
32
32
  * [Install PostgreSQL](https://cocoindex.io/docs/getting_started/installation#-install-postgres). CocoIndex uses PostgreSQL internally for incremental processing.
33
- * [Install Neo4j](https://cocoindex.io/docs/ops/storages#Neo4j), a graph database.
33
+ * [Install Neo4j](https://cocoindex.io/docs/targets/neo4j), a graph database.
34
34
  * - [Configure your OpenAI API key](https://cocoindex.io/docs/ai/llm#openai). Create a `.env` file from `.env.example`, and fill `OPENAI_API_KEY`.
35
35
 
36
36
  Alternatively, we have native support for Gemini, Ollama, LiteLLM. You can choose your favorite LLM provider and work completely on-premises.
@@ -51,7 +51,7 @@ def text_embedding_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoind
51
51
  ```
52
52
 
53
53
  `flow_builder.add_source` will create a table with sub fields (`filename`, `content`)
54
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Source" />
54
+ <DocumentationButton url="https://cocoindex.io/docs/sources" text="Source" />
55
55
 
56
56
 
57
57
  ## Process each file and collect the embeddings
@@ -64,7 +64,7 @@ doc_embeddings = data_scope.add_collector()
64
64
 
65
65
  `flow_builder.add_source` will create a table with sub fields (`filename`, `content`)
66
66
 
67
- <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Source" />
67
+ <DocumentationButton url="https://cocoindex.io/docs/sources" text="Source" />
68
68
 
69
69
  <DocumentationButton url="https://cocoindex.io/docs/core/flow_def#data-collector" text="Data Collector" />
70
70
 
@@ -0,0 +1,121 @@
1
+ ---
2
+ title: AmazonS3
3
+ toc_max_heading_level: 4
4
+ description: CocoIndex AmazonS3 Built-in Sources
5
+ ---
6
+
7
+ ### Setup for Amazon S3
8
+
9
+ #### Setup AWS accounts
10
+
11
+ You need to setup AWS accounts to own and access Amazon S3. In particular,
12
+
13
+ * Setup an AWS account from [AWS homepage](https://aws.amazon.com/) or login with an existing account.
14
+ * AWS recommends all programming access to AWS should be done using [IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) instead of root account. You can create an IAM user at [AWS IAM Console](https://console.aws.amazon.com/iam/home).
15
+ * Make sure your IAM user at least have the following permissions in the IAM console:
16
+ * Attach permission policy `AmazonS3ReadOnlyAccess` for read-only access to Amazon S3.
17
+ * (optional) Attach permission policy `AmazonSQSFullAccess` to receive notifications from Amazon SQS, if you want to enable change event notifications.
18
+ Note that `AmazonSQSReadOnlyAccess` is not enough, as we need to be able to delete messages from the queue after they're processed.
19
+
20
+
21
+ #### Setup Credentials for AWS SDK
22
+
23
+ AWS SDK needs to access credentials to access Amazon S3.
24
+ The easiest way to setup credentials is to run:
25
+
26
+ ```sh
27
+ aws configure
28
+ ```
29
+
30
+ It will create a credentials file at `~/.aws/credentials` and config at `~/.aws/config`.
31
+
32
+ See the following documents if you need more control:
33
+
34
+ * [`aws configure`](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html)
35
+ * [Globally configuring AWS SDKs and tools](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html)
36
+
37
+
38
+ #### Create Amazon S3 buckets
39
+
40
+ You can create a Amazon S3 bucket in the [Amazon S3 Console](https://s3.console.aws.amazon.com/s3/home), and upload your files to it.
41
+
42
+ It's also doable by using the AWS CLI `aws s3 mb` (to create buckets) and `aws s3 cp` (to upload files).
43
+ When doing so, make sure your current user also has permission policy `AmazonS3FullAccess`.
44
+
45
+ #### (Optional) Setup SQS queue for event notifications
46
+
47
+ You can setup an Amazon Simple Queue Service (Amazon SQS) queue to receive change event notifications from Amazon S3.
48
+ It provides a change capture mechanism for your AmazonS3 data source, to trigger reprocessing of your AWS S3 files on any creation, update or deletion. Please use a dedicated SQS queue for each of your S3 data source.
49
+
50
+ This is how to setup:
51
+
52
+ * Create a SQS queue with proper access policy.
53
+ * In the [Amazon SQS Console](https://console.aws.amazon.com/sqs/home), create a queue.
54
+ * Add access policy statements, to make sure Amazon S3 can send messages to the queue.
55
+ ```json
56
+ {
57
+ ...
58
+ "Statement": [
59
+ ...
60
+ {
61
+ "Sid": "__publish_statement",
62
+ "Effect": "Allow",
63
+ "Principal": {
64
+ "Service": "s3.amazonaws.com"
65
+ },
66
+ "Resource": "${SQS_QUEUE_ARN}",
67
+ "Action": "SQS:SendMessage",
68
+ "Condition": {
69
+ "ArnLike": {
70
+ "aws:SourceArn": "${S3_BUCKET_ARN}"
71
+ }
72
+ }
73
+ }
74
+ ]
75
+ }
76
+ ```
77
+
78
+ Here, you need to replace `${SQS_QUEUE_ARN}` and `${S3_BUCKET_ARN}` with the actual ARN of your SQS queue and S3 bucket.
79
+ You can find the ARN of your SQS queue in the existing policy statement (it starts with `arn:aws:sqs:`), and the ARN of your S3 bucket in the S3 console (it starts with `arn:aws:s3:`).
80
+
81
+ * In the [Amazon S3 Console](https://s3.console.aws.amazon.com/s3/home), open your S3 bucket. Under *Properties* tab, click *Create event notification*.
82
+ * Fill in an arbitrary event name, e.g. `S3ChangeNotifications`.
83
+ * If you want your AmazonS3 data source to expose a subset of files sharing a prefix, set the same prefix here. Otherwise, leave it empty.
84
+ * Select the following event types: *All object create events*, *All object removal events*.
85
+ * Select *SQS queue* as the destination, and specify the SQS queue you created above.
86
+
87
+ AWS's [Guide of Configuring a Bucket for Notifications](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ways-to-add-notification-config-to-bucket.html#step1-create-sqs-queue-for-notification) provides more details.
88
+
89
+ ### Spec
90
+
91
+ The spec takes the following fields:
92
+ * `bucket_name` (`str`): Amazon S3 bucket name.
93
+ * `prefix` (`str`, optional): if provided, only files with path starting with this prefix will be imported.
94
+ * `binary` (`bool`, optional): whether reading files as binary (instead of text).
95
+ * `included_patterns` (`list[str]`, optional): a list of glob patterns to include files, e.g. `["*.txt", "docs/**/*.md"]`.
96
+ If not specified, all files will be included.
97
+ * `excluded_patterns` (`list[str]`, optional): a list of glob patterns to exclude files, e.g. `["*.tmp", "**/*.log"]`.
98
+ Any file or directory matching these patterns will be excluded even if they match `included_patterns`.
99
+ If not specified, no files will be excluded.
100
+
101
+ :::info
102
+
103
+ `included_patterns` and `excluded_patterns` are using Unix-style glob syntax. See [globset syntax](https://docs.rs/globset/latest/globset/index.html#syntax) for the details.
104
+
105
+ :::
106
+
107
+ * `sqs_queue_url` (`str`, optional): if provided, the source will receive change event notifications from Amazon S3 via this SQS queue.
108
+
109
+ :::info
110
+
111
+ We will delete messages from the queue after they're processed.
112
+ If there are unrelated messages in the queue (e.g. test messages that SQS will send automatically on queue creation, messages for a different bucket, for non-included files, etc.), we will delete the message upon receiving it, to avoid repeatedly receiving irrelevant messages after they're redelivered.
113
+
114
+ :::
115
+
116
+ ### Schema
117
+
118
+ The output is a [*KTable*](/docs/core/data_types#ktable) with the following sub fields:
119
+
120
+ * `filename` (*Str*, key): the filename of the file, including the path, relative to the root directory, e.g. `"dir1/file1.md"`.
121
+ * `content` (*Str* if `binary` is `False`, otherwise *Bytes*): the content of the file.