cocoindex 0.2.1__tar.gz → 0.2.3__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 (412) hide show
  1. cocoindex-0.2.3/.github/workflows/_test.yml +65 -0
  2. {cocoindex-0.2.1 → cocoindex-0.2.3}/.github/workflows/release.yml +29 -11
  3. {cocoindex-0.2.1 → cocoindex-0.2.3}/Cargo.lock +1 -1
  4. {cocoindex-0.2.1 → cocoindex-0.2.3}/Cargo.toml +7 -2
  5. {cocoindex-0.2.1 → cocoindex-0.2.3}/PKG-INFO +18 -2
  6. {cocoindex-0.2.1 → cocoindex-0.2.3}/README.md +1 -1
  7. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/examples/examples/academic_papers_index.md +6 -4
  8. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/examples/examples/codebase_index.md +19 -12
  9. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/examples/examples/custom_targets.md +7 -5
  10. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/examples/examples/docs_to_knowledge_graph.md +8 -6
  11. cocoindex-0.2.3/docs/docs/examples/examples/image_search.md +270 -0
  12. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/examples/examples/manual_extraction.md +9 -7
  13. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/examples/examples/multi_format_index.md +29 -26
  14. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/examples/examples/patient_form_extraction.md +8 -6
  15. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/examples/examples/photo_search.md +3 -1
  16. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/examples/examples/product_recommendation.md +7 -5
  17. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/examples/examples/simple_vector_index.md +45 -22
  18. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/getting_started/installation.md +8 -1
  19. cocoindex-0.2.3/docs/docs/getting_started/quickstart.md +177 -0
  20. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/ops/sources.md +21 -0
  21. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/ops/targets.md +7 -0
  22. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docusaurus.config.ts +1 -1
  23. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/src/components/GitHubButton/index.tsx +5 -5
  24. cocoindex-0.2.3/docs/static/img/examples/codebase_index/chunk.png +0 -0
  25. cocoindex-0.2.3/docs/static/img/examples/codebase_index/cover.png +0 -0
  26. cocoindex-0.2.3/docs/static/img/examples/image_search/cover.png +0 -0
  27. cocoindex-0.2.3/docs/static/img/examples/image_search/embedding.png +0 -0
  28. cocoindex-0.2.3/docs/static/img/examples/image_search/flow.png +0 -0
  29. cocoindex-0.2.3/docs/static/img/examples/image_search/multi_modal_architecture.png +0 -0
  30. cocoindex-0.2.3/docs/static/img/examples/image_search/result.png +0 -0
  31. cocoindex-0.2.3/docs/static/img/examples/multi_format_index/colpali_architecture.png +0 -0
  32. cocoindex-0.2.3/docs/static/img/examples/multi_format_index/cover.png +0 -0
  33. cocoindex-0.2.3/docs/static/img/examples/multi_format_index/embed.png +0 -0
  34. cocoindex-0.2.3/docs/static/img/examples/multi_format_index/flow.png +0 -0
  35. cocoindex-0.2.3/docs/static/img/examples/multi_format_index/pages.png +0 -0
  36. cocoindex-0.2.3/docs/static/img/examples/simple_vector_index/embed.png +0 -0
  37. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/yarn.lock +159 -191
  38. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/amazon_s3_embedding/pyproject.toml +1 -1
  39. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/azure_blob_embedding/pyproject.toml +1 -1
  40. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/code_embedding/pyproject.toml +1 -1
  41. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/custom_output_files/pyproject.toml +1 -1
  42. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/docs_to_knowledge_graph/pyproject.toml +1 -1
  43. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/face_recognition/pyproject.toml +1 -1
  44. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/fastapi_server_docker/requirements.txt +1 -1
  45. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/gdrive_text_embedding/pyproject.toml +1 -1
  46. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/pyproject.toml +1 -1
  47. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/live_updates/pyproject.toml +1 -1
  48. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/manuals_llm_extraction/pyproject.toml +1 -1
  49. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/multi_format_indexing/pyproject.toml +1 -1
  50. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/paper_metadata/pyproject.toml +1 -1
  51. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/patient_intake_extraction/pyproject.toml +1 -1
  52. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/pdf_embedding/pyproject.toml +1 -1
  53. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/postgres_source/README.md +4 -5
  54. cocoindex-0.2.3/examples/postgres_source/main.py +164 -0
  55. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/postgres_source/prepare_source_data.sql +1 -32
  56. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/postgres_source/pyproject.toml +7 -1
  57. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/pyproject.toml +1 -1
  58. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/text_embedding/pyproject.toml +1 -1
  59. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/text_embedding_qdrant/pyproject.toml +1 -1
  60. {cocoindex-0.2.1 → cocoindex-0.2.3}/pyproject.toml +29 -0
  61. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/convert.py +37 -26
  62. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/flow.py +45 -22
  63. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/op.py +4 -19
  64. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/sources.py +13 -0
  65. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/subprocess_exec.py +27 -3
  66. cocoindex-0.2.3/python/cocoindex/tests/conftest.py +38 -0
  67. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/tests/test_transform_flow.py +31 -0
  68. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/base/value.rs +151 -194
  69. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/builder/analyzer.rs +9 -17
  70. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/builder/plan.rs +1 -1
  71. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/execution/dumper.rs +6 -5
  72. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/execution/evaluator.rs +7 -7
  73. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/execution/indexing_status.rs +1 -1
  74. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/execution/live_updater.rs +13 -9
  75. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/execution/row_indexer.rs +13 -14
  76. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/execution/source_indexer.rs +48 -46
  77. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/factory_bases.rs +5 -2
  78. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/functions/split_recursively.rs +2 -2
  79. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/interface.rs +37 -28
  80. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/py_factory.rs +2 -2
  81. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/shared/postgres.rs +9 -24
  82. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/sources/amazon_s3.rs +17 -9
  83. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/sources/azure_blob.rs +16 -8
  84. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/sources/google_drive.rs +18 -10
  85. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/sources/local_file.rs +16 -8
  86. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/sources/postgres.rs +353 -100
  87. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/targets/kuzu.rs +9 -12
  88. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/targets/neo4j.rs +2 -5
  89. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/targets/postgres.rs +20 -21
  90. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/targets/qdrant.rs +6 -5
  91. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/targets/shared/property_graph.rs +3 -1
  92. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/py/convert.rs +32 -5
  93. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/service/flows.rs +6 -5
  94. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/utils/mod.rs +1 -0
  95. cocoindex-0.2.3/src/utils/str_sanitize.rs +597 -0
  96. cocoindex-0.2.1/.github/workflows/_test.yml +0 -58
  97. cocoindex-0.2.1/docs/docs/examples/examples/image_search.md +0 -214
  98. cocoindex-0.2.1/docs/docs/getting_started/quickstart.md +0 -283
  99. cocoindex-0.2.1/docs/static/img/examples/codebase_index/chunk.png +0 -0
  100. cocoindex-0.2.1/docs/static/img/examples/codebase_index/cover.png +0 -0
  101. cocoindex-0.2.1/docs/static/img/examples/codebase_index/usecase.png +0 -0
  102. cocoindex-0.2.1/docs/static/img/examples/image_search/cover.png +0 -0
  103. cocoindex-0.2.1/docs/static/img/examples/multi_format_index/cover.png +0 -0
  104. cocoindex-0.2.1/docs/static/img/examples/simple_vector_index/embed.png +0 -0
  105. cocoindex-0.2.1/examples/postgres_source/.env.example +0 -22
  106. cocoindex-0.2.1/examples/postgres_source/main.py +0 -134
  107. {cocoindex-0.2.1 → cocoindex-0.2.3}/.cargo/config.toml +0 -0
  108. {cocoindex-0.2.1 → cocoindex-0.2.3}/.env.lib_debug +0 -0
  109. {cocoindex-0.2.1 → cocoindex-0.2.3}/.github/ISSUE_TEMPLATE//360/237/220/233-bug-report.md" +0 -0
  110. {cocoindex-0.2.1 → cocoindex-0.2.3}/.github/ISSUE_TEMPLATE//360/237/222/241-feature-request.md" +0 -0
  111. {cocoindex-0.2.1 → cocoindex-0.2.3}/.github/scripts/update_version.sh +0 -0
  112. {cocoindex-0.2.1 → cocoindex-0.2.3}/.github/workflows/CI.yml +0 -0
  113. {cocoindex-0.2.1 → cocoindex-0.2.3}/.github/workflows/_doc_release.yml +0 -0
  114. {cocoindex-0.2.1 → cocoindex-0.2.3}/.github/workflows/docs.yml +0 -0
  115. {cocoindex-0.2.1 → cocoindex-0.2.3}/.github/workflows/format.yml +0 -0
  116. {cocoindex-0.2.1 → cocoindex-0.2.3}/.gitignore +0 -0
  117. {cocoindex-0.2.1 → cocoindex-0.2.3}/.pre-commit-config.yaml +0 -0
  118. {cocoindex-0.2.1 → cocoindex-0.2.3}/CODE_OF_CONDUCT.md +0 -0
  119. {cocoindex-0.2.1 → cocoindex-0.2.3}/CONTRIBUTING.md +0 -0
  120. {cocoindex-0.2.1 → cocoindex-0.2.3}/LICENSE +0 -0
  121. {cocoindex-0.2.1 → cocoindex-0.2.3}/dev/neo4j.yaml +0 -0
  122. {cocoindex-0.2.1 → cocoindex-0.2.3}/dev/postgres.yaml +0 -0
  123. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/.gitignore +0 -0
  124. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/README.md +0 -0
  125. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/about/community.md +0 -0
  126. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/ai/llm.mdx +0 -0
  127. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/contributing/guide.md +0 -0
  128. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/contributing/new_built_in_target.mdx +0 -0
  129. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/contributing/setup_dev_environment.md +0 -0
  130. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/core/basics.md +0 -0
  131. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/core/cli.mdx +0 -0
  132. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/core/data_example.svg +0 -0
  133. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/core/data_types.mdx +0 -0
  134. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/core/flow_def.mdx +0 -0
  135. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/core/flow_example.svg +0 -0
  136. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/core/flow_methods.mdx +0 -0
  137. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/core/settings.mdx +0 -0
  138. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/custom_ops/custom_functions.mdx +0 -0
  139. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/custom_ops/custom_targets.mdx +0 -0
  140. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/examples/index.md +0 -0
  141. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/getting_started/markdown_files.zip +0 -0
  142. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/getting_started/overview.md +0 -0
  143. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/ops/functions.md +0 -0
  144. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/query.mdx +0 -0
  145. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/tutorials/live_updates.md +0 -0
  146. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/docs/tutorials/manage_flow_dynamically.mdx +0 -0
  147. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/package.json +0 -0
  148. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/sidebars.ts +0 -0
  149. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/src/css/custom.css +0 -0
  150. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/src/theme/DocCard/index.tsx +0 -0
  151. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/src/theme/DocCard/styles.module.css +0 -0
  152. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/src/theme/DocCardList/index.tsx +0 -0
  153. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/src/theme/DocCardList/styles.module.css +0 -0
  154. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/src/theme/Root.js +0 -0
  155. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/.nojekyll +0 -0
  156. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/docusaurus.png +0 -0
  157. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/academic_papers_index/abstract_chunks.png +0 -0
  158. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/academic_papers_index/basic_info.png +0 -0
  159. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/academic_papers_index/chunk_embedding.png +0 -0
  160. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/academic_papers_index/cover.png +0 -0
  161. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/academic_papers_index/first_page.png +0 -0
  162. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/academic_papers_index/flow.png +0 -0
  163. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/academic_papers_index/metadata.png +0 -0
  164. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/codebase_index/flow.png +0 -0
  165. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/custom_targets/convert.png +0 -0
  166. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/custom_targets/cover.png +0 -0
  167. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/docs_to_knowledge_graph/cover.png +0 -0
  168. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/docs_to_knowledge_graph/dedupe.png +0 -0
  169. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/docs_to_knowledge_graph/export_document.png +0 -0
  170. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/docs_to_knowledge_graph/export_relationship.png +0 -0
  171. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/docs_to_knowledge_graph/extract_relationship.png +0 -0
  172. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/docs_to_knowledge_graph/flow.png +0 -0
  173. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/docs_to_knowledge_graph/relationship.png +0 -0
  174. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/docs_to_knowledge_graph/summary.png +0 -0
  175. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/manual_extraction/cover.png +0 -0
  176. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/manual_extraction/extraction.png +0 -0
  177. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/manual_extraction/flow.png +0 -0
  178. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/manual_extraction/summary.png +0 -0
  179. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/patient_form_extraction/cover.png +0 -0
  180. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/patient_form_extraction/extraction.png +0 -0
  181. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/patient_form_extraction/fields.png +0 -0
  182. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/patient_form_extraction/flow.png +0 -0
  183. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/patient_form_extraction/tomarkdown.png +0 -0
  184. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/photo_search/cover.png +0 -0
  185. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/photo_search/extraction.png +0 -0
  186. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/photo_search/flow.png +0 -0
  187. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/product_recommendation/cover.png +0 -0
  188. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/product_recommendation/dedupe.png +0 -0
  189. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/product_recommendation/export_all.png +0 -0
  190. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/product_recommendation/export_product.png +0 -0
  191. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/product_recommendation/export_taxonomy.png +0 -0
  192. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/product_recommendation/extract_product.png +0 -0
  193. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/product_recommendation/extract_taxonomy.png +0 -0
  194. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/product_recommendation/neo4j.png +0 -0
  195. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/product_recommendation/parse_json.png +0 -0
  196. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/product_recommendation/taxonomy.png +0 -0
  197. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/simple_vector_index/chunk.png +0 -0
  198. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/simple_vector_index/cover.png +0 -0
  199. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/examples/simple_vector_index/flow.png +0 -0
  200. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/favicon.ico +0 -0
  201. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/icon.svg +0 -0
  202. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/img/incremental-etl.gif +0 -0
  203. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/static/robots.txt +0 -0
  204. {cocoindex-0.2.1 → cocoindex-0.2.3}/docs/tsconfig.json +0 -0
  205. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/amazon_s3_embedding/.env.example +0 -0
  206. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/amazon_s3_embedding/.gitignore +0 -0
  207. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/amazon_s3_embedding/README.md +0 -0
  208. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/amazon_s3_embedding/main.py +0 -0
  209. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/azure_blob_embedding/.env.example +0 -0
  210. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/azure_blob_embedding/.gitignore +0 -0
  211. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/azure_blob_embedding/README.md +0 -0
  212. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/azure_blob_embedding/main.py +0 -0
  213. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/code_embedding/.env +0 -0
  214. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/code_embedding/README.md +0 -0
  215. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/code_embedding/main.py +0 -0
  216. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/custom_output_files/.env +0 -0
  217. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/custom_output_files/.gitignore +0 -0
  218. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/custom_output_files/README.md +0 -0
  219. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/custom_output_files/data/bizarre_animals.md +0 -0
  220. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/custom_output_files/data/chunk_norris.md +0 -0
  221. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/custom_output_files/main.py +0 -0
  222. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/docs_to_knowledge_graph/.env +0 -0
  223. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/docs_to_knowledge_graph/README.md +0 -0
  224. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/docs_to_knowledge_graph/main.py +0 -0
  225. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/face_recognition/.env +0 -0
  226. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/face_recognition/README.md +0 -0
  227. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/face_recognition/images/Carter_welcomes_Reagan.jpg +0 -0
  228. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/face_recognition/images/Solvay_conference_1927.jpg +0 -0
  229. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/face_recognition/images/Steve_Jobs_and_Bill_Gates_(522695099).jpg +0 -0
  230. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/face_recognition/images/einplanck3.jpg +0 -0
  231. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/face_recognition/main.py +0 -0
  232. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/fastapi_server_docker/.dockerignore +0 -0
  233. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/fastapi_server_docker/.env +0 -0
  234. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/fastapi_server_docker/README.md +0 -0
  235. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/fastapi_server_docker/compose.yaml +0 -0
  236. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/fastapi_server_docker/dockerfile +0 -0
  237. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/fastapi_server_docker/files/1810.04805v2.md +0 -0
  238. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/fastapi_server_docker/main.py +0 -0
  239. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/gdrive_text_embedding/.env.example +0 -0
  240. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/gdrive_text_embedding/.gitignore +0 -0
  241. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/gdrive_text_embedding/README.md +0 -0
  242. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/gdrive_text_embedding/main.py +0 -0
  243. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/.env +0 -0
  244. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/README.md +0 -0
  245. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/colpali_main.py +0 -0
  246. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/frontend/.gitignore +0 -0
  247. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/frontend/index.html +0 -0
  248. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/frontend/package-lock.json +0 -0
  249. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/frontend/package.json +0 -0
  250. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/frontend/src/App.jsx +0 -0
  251. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/frontend/src/main.jsx +0 -0
  252. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/frontend/src/style.css +0 -0
  253. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/frontend/vite.config.js +0 -0
  254. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/img/cat1.jpeg +0 -0
  255. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/img/dog1.jpeg +0 -0
  256. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/img/elephant1.jpg +0 -0
  257. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/img/giraffe.jpg +0 -0
  258. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/image_search/main.py +0 -0
  259. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/live_updates/.env +0 -0
  260. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/live_updates/README.md +0 -0
  261. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/live_updates/data/bizarre_animals.md +0 -0
  262. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/live_updates/data/chunk_norris.md +0 -0
  263. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/live_updates/main.py +0 -0
  264. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/manuals_llm_extraction/.env +0 -0
  265. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/manuals_llm_extraction/README.md +0 -0
  266. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/manuals_llm_extraction/main.py +0 -0
  267. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/manuals_llm_extraction/manuals/array.pdf +0 -0
  268. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/manuals_llm_extraction/manuals/base64.pdf +0 -0
  269. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/manuals_llm_extraction/manuals/copy.pdf +0 -0
  270. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/manuals_llm_extraction/manuals/glob.pdf +0 -0
  271. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/multi_format_indexing/.env +0 -0
  272. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/multi_format_indexing/README.md +0 -0
  273. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/multi_format_indexing/main.py +0 -0
  274. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/multi_format_indexing/source_files/1706.03762v7.pdf +0 -0
  275. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/multi_format_indexing/source_files/1810.04805v2.pdf +0 -0
  276. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/multi_format_indexing/source_files/2502.06786v3.pdf +0 -0
  277. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/multi_format_indexing/source_files/healthcare_industry_test_p101.jpg +0 -0
  278. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/multi_format_indexing/source_files/healthcare_industry_test_p86.jpg +0 -0
  279. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/multi_format_indexing/source_files/healthcare_industry_test_p9.jpg +0 -0
  280. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/multi_format_indexing/source_files/restaurant_brands_international_2023.jpg +0 -0
  281. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/multi_format_indexing/source_files/sweetgreen_2023.jpg +0 -0
  282. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/paper_metadata/.env.example +0 -0
  283. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/paper_metadata/.gitignore +0 -0
  284. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/paper_metadata/README.md +0 -0
  285. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/paper_metadata/main.py +0 -0
  286. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/paper_metadata/papers/1706.03762v7.pdf +0 -0
  287. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/paper_metadata/papers/1810.04805v2.pdf +0 -0
  288. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/paper_metadata/papers/2502.06786v3.pdf +0 -0
  289. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/paper_metadata/papers/2502.20346v1.pdf +0 -0
  290. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/patient_intake_extraction/.env.example +0 -0
  291. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/patient_intake_extraction/README.md +0 -0
  292. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/patient_intake_extraction/data/README.md +0 -0
  293. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_David_Artificial.docx +0 -0
  294. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_Emily_Artificial.pdf +0 -0
  295. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_Form_Joe_Artificial.pdf +0 -0
  296. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/patient_intake_extraction/data/patient_forms/Patient_Intake_From_Jane_Artificial.docx +0 -0
  297. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/patient_intake_extraction/main.py +0 -0
  298. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/pdf_embedding/.env +0 -0
  299. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/pdf_embedding/README.md +0 -0
  300. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/pdf_embedding/main.py +0 -0
  301. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/pdf_embedding/pdf_files/1706.03762v7.pdf +0 -0
  302. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/pdf_embedding/pdf_files/1810.04805v2.pdf +0 -0
  303. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/pdf_embedding/pdf_files/rfc8259.pdf +0 -0
  304. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/postgres_source/.env +0 -0
  305. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/.env.example +0 -0
  306. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/README.md +0 -0
  307. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/img/cocoinsight.png +0 -0
  308. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/img/neo4j.png +0 -0
  309. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/main.py +0 -0
  310. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/products/p1.json +0 -0
  311. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/products/p2.json +0 -0
  312. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/products/p3.json +0 -0
  313. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/products/p4.json +0 -0
  314. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/products/p5.json +0 -0
  315. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/products/p6.json +0 -0
  316. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/products/p7.json +0 -0
  317. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/products/p8.json +0 -0
  318. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/product_recommendation/products/p9.json +0 -0
  319. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/text_embedding/.env +0 -0
  320. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/text_embedding/README.md +0 -0
  321. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/text_embedding/Text_Embedding.ipynb +0 -0
  322. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/text_embedding/main.py +0 -0
  323. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/text_embedding/markdown_files/1706.03762v7.md +0 -0
  324. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/text_embedding/markdown_files/1810.04805v2.md +0 -0
  325. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/text_embedding/markdown_files/rfc8259.md +0 -0
  326. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/text_embedding_qdrant/.env +0 -0
  327. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/text_embedding_qdrant/README.md +0 -0
  328. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/text_embedding_qdrant/main.py +0 -0
  329. {cocoindex-0.2.1 → cocoindex-0.2.3}/examples/text_embedding_qdrant/markdown_files/rfc8259.md +0 -0
  330. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/__init__.py +0 -0
  331. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/auth_registry.py +0 -0
  332. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/cli.py +0 -0
  333. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/functions.py +0 -0
  334. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/index.py +0 -0
  335. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/lib.py +0 -0
  336. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/llm.py +0 -0
  337. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/py.typed +0 -0
  338. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/runtime.py +0 -0
  339. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/setting.py +0 -0
  340. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/setup.py +0 -0
  341. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/targets.py +0 -0
  342. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/tests/__init__.py +0 -0
  343. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/tests/test_convert.py +0 -0
  344. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/tests/test_optional_database.py +0 -0
  345. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/tests/test_typing.py +0 -0
  346. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/tests/test_validation.py +0 -0
  347. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/typing.py +0 -0
  348. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/user_app_loader.py +0 -0
  349. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/utils.py +0 -0
  350. {cocoindex-0.2.1 → cocoindex-0.2.3}/python/cocoindex/validation.py +0 -0
  351. {cocoindex-0.2.1 → cocoindex-0.2.3}/ruff.toml +0 -0
  352. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/base/duration.rs +0 -0
  353. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/base/field_attrs.rs +0 -0
  354. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/base/json_schema.rs +0 -0
  355. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/base/mod.rs +0 -0
  356. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/base/schema.rs +0 -0
  357. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/base/spec.rs +0 -0
  358. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/builder/analyzed_flow.rs +0 -0
  359. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/builder/exec_ctx.rs +0 -0
  360. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/builder/flow_builder.rs +0 -0
  361. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/builder/mod.rs +0 -0
  362. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/execution/db_tracking.rs +0 -0
  363. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/execution/db_tracking_setup.rs +0 -0
  364. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/execution/memoization.rs +0 -0
  365. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/execution/mod.rs +0 -0
  366. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/execution/stats.rs +0 -0
  367. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/lib.rs +0 -0
  368. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/lib_context.rs +0 -0
  369. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/llm/anthropic.rs +0 -0
  370. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/llm/gemini.rs +0 -0
  371. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/llm/litellm.rs +0 -0
  372. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/llm/mod.rs +0 -0
  373. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/llm/ollama.rs +0 -0
  374. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/llm/openai.rs +0 -0
  375. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/llm/openrouter.rs +0 -0
  376. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/llm/vllm.rs +0 -0
  377. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/llm/voyage.rs +0 -0
  378. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/functions/embed_text.rs +0 -0
  379. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/functions/extract_by_llm.rs +0 -0
  380. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/functions/mod.rs +0 -0
  381. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/functions/parse_json.rs +0 -0
  382. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/functions/test_utils.rs +0 -0
  383. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/mod.rs +0 -0
  384. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/registration.rs +0 -0
  385. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/registry.rs +0 -0
  386. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/sdk.rs +0 -0
  387. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/shared/mod.rs +0 -0
  388. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/sources/mod.rs +0 -0
  389. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/sources/shared/mod.rs +0 -0
  390. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/sources/shared/pattern_matcher.rs +0 -0
  391. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/targets/mod.rs +0 -0
  392. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/targets/shared/mod.rs +0 -0
  393. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/ops/targets/shared/table_columns.rs +0 -0
  394. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/prelude.rs +0 -0
  395. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/py/mod.rs +0 -0
  396. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/server.rs +0 -0
  397. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/service/error.rs +0 -0
  398. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/service/mod.rs +0 -0
  399. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/settings.rs +0 -0
  400. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/setup/auth_registry.rs +0 -0
  401. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/setup/components.rs +0 -0
  402. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/setup/db_metadata.rs +0 -0
  403. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/setup/driver.rs +0 -0
  404. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/setup/flow_features.rs +0 -0
  405. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/setup/mod.rs +0 -0
  406. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/setup/states.rs +0 -0
  407. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/utils/concur_control.rs +0 -0
  408. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/utils/db.rs +0 -0
  409. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/utils/fingerprint.rs +0 -0
  410. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/utils/immutable.rs +0 -0
  411. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/utils/retryable.rs +0 -0
  412. {cocoindex-0.2.1 → cocoindex-0.2.3}/src/utils/yaml_ser.rs +0 -0
@@ -0,0 +1,65 @@
1
+ name: Run Tests
2
+
3
+ on:
4
+ workflow_call:
5
+
6
+ env:
7
+ CARGO_TERM_COLOR: always
8
+
9
+ jobs:
10
+ build-test:
11
+ strategy:
12
+ matrix:
13
+ python-version: [3.11]
14
+ platform:
15
+ - { runner: ubuntu-latest, python_exec: ".venv/bin/python" }
16
+ - { runner: ubuntu-24.04-arm, python_exec: ".venv/bin/python" }
17
+ - { runner: macos-latest, python_exec: ".venv/bin/python" }
18
+ - { runner: macos-13, python_exec: ".venv/bin/python" }
19
+ - { runner: windows-latest, python_exec: ".venv\\Scripts\\python" }
20
+ runs-on: ${{ matrix.platform.runner }}
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+
24
+ - uses: actions/setup-python@v5
25
+ id: setup_python
26
+ with:
27
+ python-version: ${{ matrix.python-version }}
28
+ cache: 'pip'
29
+
30
+ - run: rustup toolchain install stable --profile minimal
31
+ - name: Rust Cache
32
+ uses: Swatinem/rust-cache@v2
33
+ with:
34
+ key: rust-${{ matrix.platform.runner }}-${{ matrix.python-version }}
35
+ - name: Rust tests
36
+ run: cargo test --verbose
37
+
38
+ - uses: actions/cache@v4
39
+ with:
40
+ path: .venv
41
+ key: pyenv-${{ matrix.platform.runner }}-${{ steps.setup_python.outputs.python-version }}-${{ hashFiles('pyproject.toml') }}
42
+ restore-keys: |
43
+ pyenv-${{ matrix.platform.runner }}-${{ steps.setup_python.outputs.python-version }}-
44
+
45
+ - name: Setup venv
46
+ run: |
47
+ python -m venv .venv
48
+ - name: Install Python toolchains
49
+ run: |
50
+ ${{ matrix.platform.python_exec }} -m pip install maturin mypy pytest pytest-asyncio
51
+ - name: Python build
52
+ run: |
53
+ ${{ matrix.platform.python_exec }} -m maturin develop -E all
54
+ - name: Python type check (mypy)
55
+ run: |
56
+ ${{ matrix.platform.python_exec }} -m mypy python
57
+ - name: Python tests
58
+ if: ${{ !startsWith(matrix.platform.runner, 'windows') }}
59
+ run: |
60
+ ${{ matrix.platform.python_exec }} -m pytest --capture=no python/cocoindex/tests
61
+ - name: Python tests (Windows cmd)
62
+ if: ${{ startsWith(matrix.platform.runner, 'windows') }}
63
+ shell: cmd # Use `cmd` to run test for Windows, as PowerShell doesn't detect exit code by `os._exit(0)` correctly.
64
+ run: |
65
+ ${{ matrix.platform.python_exec }} -m pytest --capture=no python/cocoindex/tests
@@ -1,8 +1,7 @@
1
- # This file is autogenerated by maturin v1.8.1
2
- # To update, run
3
- #
4
- # maturin generate-ci github
1
+ # This workflow can be triggered on tags push (automatic release) or manually on any branch.
5
2
  #
3
+ # - When triggered on tags push, it will build and publishes a new version including docs.
4
+ # - When triggered manually, it's a dry-run: only build, without publishing anything.
6
5
  name: release
7
6
 
8
7
  on:
@@ -31,11 +30,11 @@ jobs:
31
30
  strategy:
32
31
  matrix:
33
32
  platform:
34
- - { os: linux, runner: ubuntu-24.04, target: x86_64, container: "ghcr.io/rust-cross/manylinux_2_28-cross:x86_64" }
35
- - { os: linux, runner: ubuntu-24.04, target: aarch64, container: "ghcr.io/rust-cross/manylinux_2_28-cross:aarch64" }
36
- - { os: windows, runner: windows-latest, target: x64 }
33
+ - { os: linux, runner: ubuntu-latest, target: x86_64, container: "ghcr.io/rust-cross/manylinux_2_28-cross:x86_64" }
34
+ - { os: linux, runner: ubuntu-24.04-arm, target: aarch64, container: "ghcr.io/rust-cross/manylinux_2_28-cross:aarch64" }
35
+ - { os: macos, runner: macos-latest, target: aarch64 }
37
36
  - { os: macos, runner: macos-13, target: x86_64 }
38
- - { os: macos, runner: macos-14, target: aarch64 }
37
+ - { os: windows, runner: windows-latest, target: x64 }
39
38
  steps:
40
39
  - uses: actions/checkout@v4
41
40
  - uses: actions/download-artifact@v4
@@ -43,12 +42,12 @@ jobs:
43
42
  name: Cargo.toml
44
43
  - uses: actions/setup-python@v5
45
44
  with:
46
- python-version: 3.x
45
+ python-version: 3.13
47
46
  - name: Build wheels
48
47
  uses: PyO3/maturin-action@v1
49
48
  with:
50
49
  target: ${{ matrix.platform.target }}
51
- args: --release --out dist --find-interpreter
50
+ args: --release --out dist
52
51
  sccache: 'true'
53
52
  manylinux: auto
54
53
  container: ${{ matrix.platform.container }}
@@ -58,6 +57,24 @@ jobs:
58
57
  name: wheels-${{ matrix.platform.os }}-${{ matrix.platform.target }}
59
58
  path: dist
60
59
 
60
+ test-abi3:
61
+ runs-on: ubuntu-24.04
62
+ needs: build
63
+ strategy:
64
+ matrix:
65
+ py: ["3.11", "3.12", "3.13"]
66
+ steps:
67
+ - uses: actions/download-artifact@v4
68
+ with:
69
+ name: wheels-linux-x86_64
70
+ - uses: actions/setup-python@v5
71
+ with:
72
+ python-version: ${{ matrix.py }}
73
+ - run: python -V
74
+ - run: pip install --find-links=./ cocoindex
75
+ - run: python -c "import cocoindex, sys; print('import ok on', sys.version)"
76
+
77
+
61
78
  sdist:
62
79
  runs-on: ubuntu-latest
63
80
  needs: [create-versioned-toml]
@@ -80,7 +97,7 @@ jobs:
80
97
  release:
81
98
  name: Release
82
99
  runs-on: ubuntu-latest
83
- needs: [create-versioned-toml, build, sdist]
100
+ needs: [create-versioned-toml, build, test-abi3, sdist]
84
101
  permissions:
85
102
  # Use to sign the release artifacts
86
103
  id-token: write
@@ -111,5 +128,6 @@ jobs:
111
128
  release-docs:
112
129
  name: Release Docs
113
130
  needs: [release]
131
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
114
132
  uses: ./.github/workflows/_doc_release.yml
115
133
  secrets: inherit
@@ -1283,7 +1283,7 @@ dependencies = [
1283
1283
 
1284
1284
  [[package]]
1285
1285
  name = "cocoindex"
1286
- version = "0.2.1"
1286
+ version = "0.2.3"
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.1"
5
+ version = "0.2.3"
6
6
  edition = "2024"
7
7
  rust-version = "1.88"
8
8
  readme = "README.md"
@@ -16,7 +16,12 @@ name = "cocoindex_engine"
16
16
  crate-type = ["cdylib"]
17
17
 
18
18
  [dependencies]
19
- pyo3 = { version = "0.25.1", features = ["chrono", "auto-initialize", "uuid"] }
19
+ pyo3 = { version = "0.25.1", features = [
20
+ "abi3-py311",
21
+ "auto-initialize",
22
+ "chrono",
23
+ "uuid",
24
+ ] }
20
25
  pythonize = "0.25.0"
21
26
  pyo3-async-runtimes = { version = "0.25.0", features = ["tokio-runtime"] }
22
27
 
@@ -1,6 +1,21 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cocoindex
3
- Version: 0.2.1
3
+ Version: 0.2.3
4
+ Classifier: Development Status :: 3 - Alpha
5
+ Classifier: License :: OSI Approved :: Apache Software License
6
+ Classifier: Operating System :: OS Independent
7
+ Classifier: Programming Language :: Rust
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3 :: Only
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3.14
14
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
15
+ Classifier: Topic :: Text Processing :: Indexing
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Natural Language :: English
18
+ Classifier: Typing :: Typed
4
19
  Requires-Dist: click>=8.1.8
5
20
  Requires-Dist: rich>=14.0.0
6
21
  Requires-Dist: python-dotenv>=1.1.0
@@ -21,6 +36,7 @@ Provides-Extra: colpali
21
36
  Provides-Extra: all
22
37
  License-File: LICENSE
23
38
  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.
39
+ Keywords: indexing,real-time,incremental,pipeline,search,ai,etl,rag,dataflow,context-engineering
24
40
  Author-email: CocoIndex <cocoindex.io@gmail.com>
25
41
  License-Expression: Apache-2.0
26
42
  Requires-Python: >=3.11
@@ -84,7 +100,7 @@ CocoIndex makes it effortless to transform data with AI, and keep source data an
84
100
  </br>
85
101
 
86
102
  <p align="center">
87
- <img width="4187" height="1883" alt="CocoIndex Features" src="https://github.com/user-attachments/assets/6147673f-0daf-4313-a0c7-7c4205ba2e31" />
103
+ <img alt="CocoIndex Features" src="https://cocoindex.io/images/venn2.svg" />
88
104
  </p>
89
105
 
90
106
  </br>
@@ -55,7 +55,7 @@ CocoIndex makes it effortless to transform data with AI, and keep source data an
55
55
  </br>
56
56
 
57
57
  <p align="center">
58
- <img width="4187" height="1883" alt="CocoIndex Features" src="https://github.com/user-attachments/assets/6147673f-0daf-4313-a0c7-7c4205ba2e31" />
58
+ <img alt="CocoIndex Features" src="https://cocoindex.io/images/venn2.svg" />
59
59
  </p>
60
60
 
61
61
  </br>
@@ -12,7 +12,9 @@ tags: [vector-index, metadata]
12
12
 
13
13
  import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/components/GitHubButton';
14
14
 
15
- <GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/paper_metadata"/>
15
+ <GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/paper_metadata" margin="0 0 24px 0" />
16
+
17
+ ![Academic Papers Index](/img/examples/academic_papers_index/cover.png)
16
18
 
17
19
  ## What we will achieve
18
20
 
@@ -45,7 +47,7 @@ to answer questions like "Give me all the papers by Jeff Dean."
45
47
  CocoIndex uses PostgreSQL internally for incremental processing.
46
48
  - [Configure your OpenAI API key](https://cocoindex.io/docs/ai/llm#openai). Alternatively, we have native support for Gemini, Ollama, LiteLLM. You can choose your favorite LLM provider and work completely on-premises.
47
49
 
48
- <DocumentationButton href="https://cocoindex.io/docs/ai/llm" text="LLM" margin="0 0 16px 0" />
50
+ <DocumentationButton url="https://cocoindex.io/docs/ai/llm" text="LLM" margin="0 0 16px 0" />
49
51
 
50
52
  ## Import the Papers
51
53
 
@@ -61,7 +63,7 @@ def paper_metadata_flow(
61
63
  ```
62
64
 
63
65
  `flow_builder.add_source` will create a table with sub fields (`filename`, `content`).
64
- <DocumentationButton href="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
66
+ <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
65
67
 
66
68
  ## Extract and collect metadata
67
69
 
@@ -321,7 +323,7 @@ metadata_embeddings.export(
321
323
 
322
324
  In this example we use PGVector as embedding store. With CocoIndex, you can do one line switch on other supported Vector databases.
323
325
 
324
- <DocumentationButton href="https://cocoindex.io/docs/ops/targets#entry-oriented-targets" text="Entry Oriented Targets" margin="0 0 16px 0" />
326
+ <DocumentationButton url="https://cocoindex.io/docs/ops/targets#entry-oriented-targets" text="Entry Oriented Targets" margin="0 0 16px 0" />
325
327
 
326
328
  ## Query the index
327
329
 
@@ -12,23 +12,23 @@ tags: [vector-index, codebase]
12
12
 
13
13
  import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/components/GitHubButton';
14
14
 
15
- <GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/code_embedding"/>
16
- <YouTubeButton url="https://youtu.be/G3WstvhHO24?si=ndYfM0XRs03_hVPR" />
15
+ <GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/code_embedding" margin="0 0 24px 0" />
16
+ <YouTubeButton url="https://youtu.be/G3WstvhHO24?si=ndYfM0XRs03_hVPR" margin="0 0 24px 0" />
17
+
18
+ ![Codebase Index](/img/examples/codebase_index/cover.png)
17
19
 
18
20
  ## Overview
19
21
  In this tutorial, we will build codebase index. [CocoIndex](https://github.com/cocoindex-io/cocoindex) provides built-in support for codebase chunking, with native Tree-sitter support. It works with large codebases, and can be updated in near real-time with incremental processing - only reprocess what's changed.
20
22
 
21
23
  ## Use Cases
22
- A wide range of applications can be built with an effective codebase index that is always up-to-date. Some examples include:
23
-
24
- ![Use case illustration](/img/examples/codebase_index/usecase.png)
24
+ A wide range of applications can be built with an effective codebase index that is always up-to-date.
25
25
 
26
26
  - Semantic code context for AI coding agents like Claude, Codex, Gemini CLI.
27
27
  - MCP for code editors such as Cursor, Windsurf, and VSCode.
28
28
  - Context-aware code search applications—semantic code search, natural language code retrieval.
29
29
  - Context for code review agents—AI code review, automated code analysis, code quality checks, pull request summarization.
30
30
  - Automated code refactoring, large-scale code migration.
31
- - Enhance SRE workflows: enable rapid root cause analysis, incident response, and change impact assessment by indexing infrastructure-as-code, deployment scripts, and config files for semantic search and lineage tracking.
31
+ - SRE workflows: enable rapid root cause analysis, incident response, and change impact assessment by indexing infrastructure-as-code, deployment scripts, and config files for semantic search and lineage tracking.
32
32
  - Automatically generate design documentation from code—keep design docs up-to-date.
33
33
 
34
34
  ## Flow Overview
@@ -67,7 +67,7 @@ def code_embedding_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoind
67
67
  - Exclude files and directories starting `.`, `target` in the root and `node_modules` under any directory.
68
68
 
69
69
  `flow_builder.add_source` will create a table with sub fields (`filename`, `content`).
70
- <DocumentationButton href="https://cocoindex.io/docs/ops/sources" text="Sources" />
70
+ <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" />
71
71
 
72
72
 
73
73
  ## Process each file and collect the information
@@ -84,7 +84,7 @@ def extract_extension(filename: str) -> str:
84
84
  return os.path.splitext(filename)[1]
85
85
  ```
86
86
 
87
- <DocumentationButton href="https://cocoindex.io/docs/custom_ops/custom_functions" text="Custom Function" margin="0 0 16px 0" />
87
+ <DocumentationButton url="https://cocoindex.io/docs/custom_ops/custom_functions" text="Custom Function" margin="0 0 16px 0" />
88
88
 
89
89
  ### Split the file into chunks
90
90
  We use the `SplitRecursively` function to split the file into chunks. `SplitRecursively` is CocoIndex building block, with native integration with Tree-sitter. You need to pass in the language to the `language` parameter if you are processing code.
@@ -97,7 +97,7 @@ with data_scope["files"].row() as file:
97
97
  cocoindex.functions.SplitRecursively(),
98
98
  language=file["extension"], chunk_size=1000, chunk_overlap=300)
99
99
  ```
100
- <DocumentationButton href="https://cocoindex.io/docs/ops/functions#splitrecursively" text="SplitRecursively" margin="0 0 16px 0" />
100
+ <DocumentationButton url="https://cocoindex.io/docs/ops/functions#splitrecursively" text="SplitRecursively" margin="0 0 16px 0" />
101
101
 
102
102
  ![SplitRecursively](/img/examples/codebase_index/chunk.png)
103
103
 
@@ -112,13 +112,13 @@ def code_to_embedding(text: cocoindex.DataSlice[str]) -> cocoindex.DataSlice[lis
112
112
  model="sentence-transformers/all-MiniLM-L6-v2"))
113
113
  ```
114
114
 
115
- <DocumentationButton href="https://cocoindex.io/docs/ops/functions#sentencetransformerembed" text="SentenceTransformerEmbed" margin="0 0 16px 0" />
115
+ <DocumentationButton url="https://cocoindex.io/docs/ops/functions#sentencetransformerembed" text="SentenceTransformerEmbed" margin="0 0 16px 0" />
116
116
 
117
117
  :::tip
118
118
  `@cocoindex.transform_flow()` is needed to share the transformation across indexing and query. When building a vector index and querying against it, the embedding computation must remain consistent between indexing and querying.
119
119
  :::
120
120
 
121
- <DocumentationButton href="https://cocoindex.io/docs/query#transform-flow" text="Transform Flow" margin="0 0 16px 0" />
121
+ <DocumentationButton url="https://cocoindex.io/docs/query#transform-flow" text="Transform Flow" margin="0 0 16px 0" />
122
122
 
123
123
  Then for each chunk, we will embed it using the `code_to_embedding` function, and collect the embeddings to the `code_embeddings` collector.
124
124
 
@@ -222,4 +222,11 @@ To spin up, it is super easy.
222
222
  ```
223
223
  cocoindex server main.py -ci
224
224
  ```
225
- Follow the url from the terminal - `https://cocoindex.io/cocoinsight` to access the CocoInsight.
225
+ Follow the url from the terminal - `https://cocoindex.io/cocoinsight` to access the CocoInsight.
226
+
227
+
228
+ ## Supported Languages
229
+
230
+ SplitRecursively has native support for all major programming languages.
231
+
232
+ <DocumentationButton url="https://cocoindex.io/docs/ops/functions#supported-languages" text="Supported Languages" margin="0 0 16px 0" />
@@ -11,7 +11,9 @@ tags: [custom-building-blocks]
11
11
  ---
12
12
  import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/components/GitHubButton';
13
13
 
14
- <GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/custom_output_files"/>
14
+ <GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/custom_output_files" margin="0 0 24px 0" />
15
+
16
+ ![Custom Targets](/img/examples/custom_targets/cover.png)
15
17
 
16
18
  ## Overview
17
19
 
@@ -33,7 +35,7 @@ flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.DataScope
33
35
  )
34
36
  ```
35
37
  This ingestion creates a table with `filename` and `content` fields.
36
- <DocumentationButton href="https://cocoindex.io/docs/ops/sources" text="Sources" />
38
+ <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" />
37
39
 
38
40
  ## Process each file and collect
39
41
 
@@ -45,7 +47,7 @@ def markdown_to_html(text: str) -> str:
45
47
  return _markdown_it.render(text)
46
48
  ```
47
49
 
48
- <DocumentationButton href="https://cocoindex.io/docs/custom_ops/custom_functions" text="Custom Function" margin="0 0 16px 0" />
50
+ <DocumentationButton url="https://cocoindex.io/docs/custom_ops/custom_functions" text="Custom Function" margin="0 0 16px 0" />
49
51
 
50
52
  Define data collector and transform each document to html.
51
53
 
@@ -62,7 +64,7 @@ with data_scope["documents"].row() as doc:
62
64
 
63
65
  ### Define the target spec
64
66
 
65
- <DocumentationButton href="https://cocoindex.io/docs/custom_ops/custom_targets#target-spec" text="Target Spec" margin="0 0 16px 0" />
67
+ <DocumentationButton url="https://cocoindex.io/docs/custom_ops/custom_targets#target-spec" text="Target Spec" margin="0 0 16px 0" />
66
68
 
67
69
  The target spec contains a directory for output files:
68
70
 
@@ -74,7 +76,7 @@ class LocalFileTarget(cocoindex.op.TargetSpec):
74
76
 
75
77
  ### Implement the connector
76
78
 
77
- <DocumentationButton href="https://cocoindex.io/docs/custom_ops/custom_targets#target-connector" text="Target Connector" margin="0 0 16px 0" />
79
+ <DocumentationButton url="https://cocoindex.io/docs/custom_ops/custom_targets#target-connector" text="Target Connector" margin="0 0 16px 0" />
78
80
 
79
81
  `get_persistent_key()` defines the persistent key,
80
82
  which uniquely identifies the target for change tracking and incremental updates. Here, we simply use the target directory as the key (e.g., `./data/output`).
@@ -12,8 +12,10 @@ tags: [knowledge-graph, structured-data-extraction]
12
12
 
13
13
  import { GitHubButton, YouTubeButton, DocumentationButton } from '../../../src/components/GitHubButton';
14
14
 
15
- <GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/docs_to_knowledge_graph"/>
16
- <YouTubeButton url="https://youtu.be/2KVkpUGRtnk?si=MRalDweWrid-IFje" />
15
+ <GitHubButton url="https://github.com/cocoindex-io/cocoindex/tree/main/examples/docs_to_knowledge_graph" margin="0 0 24px 0" />
16
+ <YouTubeButton url="https://youtu.be/2KVkpUGRtnk?si=MRalDweWrid-IFje" margin="0 0 24px 0" />
17
+
18
+ ![Knowledge Graph for Docs](/img/examples/docs_to_knowledge_graph/cover.png)
17
19
 
18
20
  ## Overview
19
21
  [CocoIndex](https://github.com/cocoindex-io/cocoindex) makes it easy to build and maintain knowledge graphs with continuous source updates. In this tutorial, we will use LLM to extract relationships between the concepts in each document, and generate two kinds of relationships:
@@ -37,11 +39,11 @@ and then build a knowledge graph.
37
39
  * [Install Neo4j](https://cocoindex.io/docs/ops/targets#neo4j-dev-instance), a graph database.
38
40
  * [Configure your OpenAI API key](https://cocoindex.io/docs/ai/llm#openai). Alternatively, we have native support for Gemini, Ollama, LiteLLM. You can choose your favorite LLM provider and work completely on-premises.
39
41
 
40
- <DocumentationButton href="https://cocoindex.io/docs/ai/llm" text="LLM" margin="0 0 16px 0" />
42
+ <DocumentationButton url="https://cocoindex.io/docs/ai/llm" text="LLM" margin="0 0 16px 0" />
41
43
 
42
44
 
43
45
  ## Documentation
44
- <DocumentationButton href="https://cocoindex.io/docs/ops/targets#property-graph-targets" text="Property Graph Targets" margin="0 0 16px 0" />
46
+ <DocumentationButton url="https://cocoindex.io/docs/ops/targets#property-graph-targets" text="Property Graph Targets" margin="0 0 16px 0" />
45
47
 
46
48
 
47
49
  ## Data flow to build knowledge graph
@@ -61,7 +63,7 @@ def docs_to_kg_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.D
61
63
  Here `flow_builder.add_source` creates a [KTable](https://cocoindex.io/docs/core/data_types#KTable).
62
64
  `filename` is the key of the KTable.
63
65
 
64
- <DocumentationButton href="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
66
+ <DocumentationButton url="https://cocoindex.io/docs/ops/sources" text="Sources" margin="0 0 16px 0" />
65
67
 
66
68
 
67
69
  ### Add data collectors
@@ -366,7 +368,7 @@ MATCH p=()-->() RETURN p
366
368
  ## Kuzu
367
369
  Cocoindex natively supports Kuzu - a high performant, embedded open source graph database.
368
370
 
369
- <DocumentationButton href="https://cocoindex.io/docs/ops/targets#kuzu" text="Kuzu" margin="0 0 16px 0" />
371
+ <DocumentationButton url="https://cocoindex.io/docs/ops/targets#kuzu" text="Kuzu" margin="0 0 16px 0" />
370
372
 
371
373
  The GraphDB interface in CocoIndex is standardized, you just need to **switch the configuration** without any additional code changes. CocoIndex supports exporting to Kuzu through its API server. You can bring up a Kuzu API server locally by running:
372
374