cocoindex 0.1.39__tar.gz → 0.1.40__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 (234) hide show
  1. {cocoindex-0.1.39 → cocoindex-0.1.40}/Cargo.lock +1 -1
  2. {cocoindex-0.1.39 → cocoindex-0.1.40}/Cargo.toml +1 -1
  3. {cocoindex-0.1.39 → cocoindex-0.1.40}/PKG-INFO +2 -2
  4. {cocoindex-0.1.39 → cocoindex-0.1.40}/README.md +1 -1
  5. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/amazon_s3_embedding/pyproject.toml +4 -1
  6. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/code_embedding/pyproject.toml +4 -1
  7. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/docs_to_knowledge_graph/pyproject.toml +4 -1
  8. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/gdrive_text_embedding/pyproject.toml +4 -1
  9. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/manuals_llm_extraction/pyproject.toml +4 -1
  10. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/pdf_embedding/pyproject.toml +4 -1
  11. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/README.md +4 -2
  12. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/pyproject.toml +4 -1
  13. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/text_embedding/main.py +1 -0
  14. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/text_embedding/pyproject.toml +4 -1
  15. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/text_embedding_qdrant/pyproject.toml +4 -1
  16. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/__init__.py +1 -1
  17. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/flow.py +21 -9
  18. cocoindex-0.1.40/python/cocoindex/utils.py +9 -0
  19. {cocoindex-0.1.39 → cocoindex-0.1.40}/.cargo/config.toml +0 -0
  20. {cocoindex-0.1.39 → cocoindex-0.1.40}/.env.lib_debug +0 -0
  21. {cocoindex-0.1.39 → cocoindex-0.1.40}/.github/ISSUE_TEMPLATE//360/237/220/233-bug-report.md" +0 -0
  22. {cocoindex-0.1.39 → cocoindex-0.1.40}/.github/ISSUE_TEMPLATE//360/237/222/241-feature-request.md" +0 -0
  23. {cocoindex-0.1.39 → cocoindex-0.1.40}/.github/scripts/update_version.sh +0 -0
  24. {cocoindex-0.1.39 → cocoindex-0.1.40}/.github/workflows/CI.yml +0 -0
  25. {cocoindex-0.1.39 → cocoindex-0.1.40}/.github/workflows/_test.yml +0 -0
  26. {cocoindex-0.1.39 → cocoindex-0.1.40}/.github/workflows/docs.yml +0 -0
  27. {cocoindex-0.1.39 → cocoindex-0.1.40}/.github/workflows/release.yml +0 -0
  28. {cocoindex-0.1.39 → cocoindex-0.1.40}/.gitignore +0 -0
  29. {cocoindex-0.1.39 → cocoindex-0.1.40}/.vscode/settings.json +0 -0
  30. {cocoindex-0.1.39 → cocoindex-0.1.40}/CODE_OF_CONDUCT.md +0 -0
  31. {cocoindex-0.1.39 → cocoindex-0.1.40}/CONTRIBUTING.md +0 -0
  32. {cocoindex-0.1.39 → cocoindex-0.1.40}/LICENSE +0 -0
  33. {cocoindex-0.1.39 → cocoindex-0.1.40}/dev/neo4j.yaml +0 -0
  34. {cocoindex-0.1.39 → cocoindex-0.1.40}/dev/postgres.yaml +0 -0
  35. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/.gitignore +0 -0
  36. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/README.md +0 -0
  37. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/about/community.md +0 -0
  38. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/about/contributing.md +0 -0
  39. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/ai/llm.mdx +0 -0
  40. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/core/basics.md +0 -0
  41. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/core/cli.mdx +0 -0
  42. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/core/custom_function.mdx +0 -0
  43. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/core/data_example.svg +0 -0
  44. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/core/data_types.mdx +0 -0
  45. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/core/flow_def.mdx +0 -0
  46. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/core/flow_example.svg +0 -0
  47. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/core/flow_methods.mdx +0 -0
  48. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/core/initialization.mdx +0 -0
  49. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/getting_started/installation.md +0 -0
  50. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/getting_started/markdown_files.zip +0 -0
  51. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/getting_started/overview.md +0 -0
  52. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/getting_started/quickstart.md +0 -0
  53. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/ops/functions.md +0 -0
  54. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/ops/sources.md +0 -0
  55. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docs/ops/storages.md +0 -0
  56. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/docusaurus.config.ts +0 -0
  57. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/package.json +0 -0
  58. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/sidebars.ts +0 -0
  59. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/src/components/HomepageFeatures/index.tsx +0 -0
  60. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/src/components/HomepageFeatures/styles.module.css +0 -0
  61. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/src/css/custom.css +0 -0
  62. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/src/theme/Root.js +0 -0
  63. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/static/.nojekyll +0 -0
  64. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/static/img/docusaurus.png +0 -0
  65. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/static/img/favicon.ico +0 -0
  66. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/static/img/icon.svg +0 -0
  67. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/static/robots.txt +0 -0
  68. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/tsconfig.json +0 -0
  69. {cocoindex-0.1.39 → cocoindex-0.1.40}/docs/yarn.lock +0 -0
  70. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/amazon_s3_embedding/.env.example +0 -0
  71. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/amazon_s3_embedding/.gitignore +0 -0
  72. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/amazon_s3_embedding/README.md +0 -0
  73. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/amazon_s3_embedding/main.py +0 -0
  74. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/code_embedding/.env +0 -0
  75. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/code_embedding/README.md +0 -0
  76. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/code_embedding/main.py +0 -0
  77. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/docs_to_knowledge_graph/.env +0 -0
  78. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/docs_to_knowledge_graph/README.md +0 -0
  79. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/docs_to_knowledge_graph/main.py +0 -0
  80. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/fastapi_server_docker/.dockerignore +0 -0
  81. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/fastapi_server_docker/.env +0 -0
  82. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/fastapi_server_docker/README.md +0 -0
  83. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/fastapi_server_docker/compose.yaml +0 -0
  84. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/fastapi_server_docker/dockerfile +0 -0
  85. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/fastapi_server_docker/main.py +0 -0
  86. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/fastapi_server_docker/requirements.txt +0 -0
  87. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/fastapi_server_docker/sample_code/main.py +0 -0
  88. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/fastapi_server_docker/src/cocoindex_funs.py +0 -0
  89. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/gdrive_text_embedding/.env.example +0 -0
  90. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/gdrive_text_embedding/.gitignore +0 -0
  91. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/gdrive_text_embedding/README.md +0 -0
  92. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/gdrive_text_embedding/main.py +0 -0
  93. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/.env +0 -0
  94. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/README.md +0 -0
  95. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/frontend/.gitignore +0 -0
  96. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/frontend/index.html +0 -0
  97. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/frontend/package-lock.json +0 -0
  98. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/frontend/package.json +0 -0
  99. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/frontend/src/App.jsx +0 -0
  100. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/frontend/src/main.jsx +0 -0
  101. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/frontend/src/style.css +0 -0
  102. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/frontend/vite.config.js +0 -0
  103. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/img/cat1.jpeg +0 -0
  104. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/img/dog1.jpeg +0 -0
  105. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/img/elephant1.jpg +0 -0
  106. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/img/giraffe.jpg +0 -0
  107. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/main.py +0 -0
  108. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/image_search_example/requirements.txt +0 -0
  109. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/manuals_llm_extraction/.env +0 -0
  110. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/manuals_llm_extraction/README.md +0 -0
  111. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/manuals_llm_extraction/main.py +0 -0
  112. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/manuals_llm_extraction/manuals/array.pdf +0 -0
  113. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/manuals_llm_extraction/manuals/base64.pdf +0 -0
  114. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/manuals_llm_extraction/manuals/copy.pdf +0 -0
  115. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/manuals_llm_extraction/manuals/glob.pdf +0 -0
  116. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/pdf_embedding/.env +0 -0
  117. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/pdf_embedding/README.md +0 -0
  118. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/pdf_embedding/main.py +0 -0
  119. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/pdf_embedding/pdf_files/1706.03762v7.pdf +0 -0
  120. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/pdf_embedding/pdf_files/1810.04805v2.pdf +0 -0
  121. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/pdf_embedding/pdf_files/rfc8259.pdf +0 -0
  122. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/.env +0 -0
  123. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/img/cocoinsight.png +0 -0
  124. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/img/neo4j.png +0 -0
  125. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/main.py +0 -0
  126. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/products/p1.json +0 -0
  127. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/products/p2.json +0 -0
  128. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/products/p3.json +0 -0
  129. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/products/p4.json +0 -0
  130. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/products/p5.json +0 -0
  131. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/products/p6.json +0 -0
  132. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/products/p7.json +0 -0
  133. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/products/p8.json +0 -0
  134. {cocoindex-0.1.39/examples/product_taxonomy_knowledge_graph → cocoindex-0.1.40/examples/product_recommendation}/products/p9.json +0 -0
  135. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/text_embedding/.env +0 -0
  136. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/text_embedding/README.md +0 -0
  137. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/text_embedding/Text_Embedding.ipynb +0 -0
  138. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/text_embedding/markdown_files/1706.03762v7.md +0 -0
  139. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/text_embedding/markdown_files/1810.04805v2.md +0 -0
  140. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/text_embedding/markdown_files/rfc8259.md +0 -0
  141. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/text_embedding_qdrant/.env +0 -0
  142. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/text_embedding_qdrant/README.md +0 -0
  143. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/text_embedding_qdrant/main.py +0 -0
  144. {cocoindex-0.1.39 → cocoindex-0.1.40}/examples/text_embedding_qdrant/markdown_files/rfc8259.md +0 -0
  145. {cocoindex-0.1.39 → cocoindex-0.1.40}/pyproject.toml +0 -0
  146. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/auth_registry.py +0 -0
  147. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/cli.py +0 -0
  148. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/convert.py +0 -0
  149. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/functions.py +0 -0
  150. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/index.py +0 -0
  151. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/lib.py +0 -0
  152. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/llm.py +0 -0
  153. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/op.py +0 -0
  154. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/py.typed +0 -0
  155. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/query.py +0 -0
  156. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/runtime.py +0 -0
  157. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/setting.py +0 -0
  158. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/setup.py +0 -0
  159. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/sources.py +0 -0
  160. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/storages.py +0 -0
  161. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/tests/__init__.py +0 -0
  162. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/tests/test_convert.py +0 -0
  163. {cocoindex-0.1.39 → cocoindex-0.1.40}/python/cocoindex/typing.py +0 -0
  164. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/base/field_attrs.rs +0 -0
  165. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/base/json_schema.rs +0 -0
  166. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/base/mod.rs +0 -0
  167. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/base/schema.rs +0 -0
  168. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/base/spec.rs +0 -0
  169. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/base/value.rs +0 -0
  170. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/builder/analyzed_flow.rs +0 -0
  171. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/builder/analyzer.rs +0 -0
  172. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/builder/flow_builder.rs +0 -0
  173. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/builder/mod.rs +0 -0
  174. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/builder/plan.rs +0 -0
  175. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/execution/db_tracking.rs +0 -0
  176. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/execution/db_tracking_setup.rs +0 -0
  177. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/execution/dumper.rs +0 -0
  178. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/execution/evaluator.rs +0 -0
  179. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/execution/indexing_status.rs +0 -0
  180. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/execution/live_updater.rs +0 -0
  181. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/execution/memoization.rs +0 -0
  182. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/execution/mod.rs +0 -0
  183. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/execution/query.rs +0 -0
  184. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/execution/row_indexer.rs +0 -0
  185. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/execution/source_indexer.rs +0 -0
  186. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/execution/stats.rs +0 -0
  187. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/lib.rs +0 -0
  188. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/lib_context.rs +0 -0
  189. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/llm/anthropic.rs +0 -0
  190. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/llm/gemini.rs +0 -0
  191. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/llm/mod.rs +0 -0
  192. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/llm/ollama.rs +0 -0
  193. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/llm/openai.rs +0 -0
  194. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/factory_bases.rs +0 -0
  195. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/functions/extract_by_llm.rs +0 -0
  196. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/functions/mod.rs +0 -0
  197. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/functions/parse_json.rs +0 -0
  198. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/functions/split_recursively.rs +0 -0
  199. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/interface.rs +0 -0
  200. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/mod.rs +0 -0
  201. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/py_factory.rs +0 -0
  202. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/registration.rs +0 -0
  203. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/registry.rs +0 -0
  204. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/sdk.rs +0 -0
  205. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/sources/amazon_s3.rs +0 -0
  206. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/sources/google_drive.rs +0 -0
  207. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/sources/local_file.rs +0 -0
  208. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/sources/mod.rs +0 -0
  209. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/storages/mod.rs +0 -0
  210. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/storages/neo4j.rs +0 -0
  211. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/storages/postgres.rs +0 -0
  212. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/storages/qdrant.rs +0 -0
  213. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/ops/storages/spec.rs +0 -0
  214. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/prelude.rs +0 -0
  215. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/py/convert.rs +0 -0
  216. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/py/mod.rs +0 -0
  217. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/server.rs +0 -0
  218. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/service/error.rs +0 -0
  219. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/service/flows.rs +0 -0
  220. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/service/mod.rs +0 -0
  221. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/service/search.rs +0 -0
  222. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/settings.rs +0 -0
  223. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/setup/auth_registry.rs +0 -0
  224. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/setup/components.rs +0 -0
  225. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/setup/db_metadata.rs +0 -0
  226. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/setup/driver.rs +0 -0
  227. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/setup/mod.rs +0 -0
  228. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/setup/states.rs +0 -0
  229. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/utils/db.rs +0 -0
  230. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/utils/fingerprint.rs +0 -0
  231. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/utils/immutable.rs +0 -0
  232. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/utils/mod.rs +0 -0
  233. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/utils/retryable.rs +0 -0
  234. {cocoindex-0.1.39 → cocoindex-0.1.40}/src/utils/yaml_ser.rs +0 -0
@@ -993,7 +993,7 @@ dependencies = [
993
993
 
994
994
  [[package]]
995
995
  name = "cocoindex"
996
- version = "0.1.39"
996
+ version = "0.1.40"
997
997
  dependencies = [
998
998
  "anyhow",
999
999
  "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.1.39"
5
+ version = "0.1.40"
6
6
  edition = "2024"
7
7
 
8
8
  [profile.release]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cocoindex
3
- Version: 0.1.39
3
+ Version: 0.1.40
4
4
  Requires-Dist: sentence-transformers>=3.3.1
5
5
  Requires-Dist: click>=8.1.8
6
6
  Requires-Dist: rich>=14.0.0
@@ -153,7 +153,7 @@ It defines an index flow like this:
153
153
  | [Docs to Knowledge Graph](examples/docs_to_knowledge_graph) | Extract relationships from Markdown documents and build a knowledge graph |
154
154
  | [Embeddings to Qdrant](examples/text_embedding_qdrant) | Index documents in a Qdrant collection for semantic search |
155
155
  | [FastAPI Server with Docker](examples/fastapi_server_docker) | Run the semantic search server in a Dockerized FastAPI setup |
156
- | [Product_Taxonomy_Knowledge_Graph](examples/product_taxonomy_knowledge_graph) | Build knowledge graph for product recommendations |
156
+ | [Product Recommendation](examples/product_recommendation) | Build real-time product recommendations with LLM and graph database|
157
157
  | [Image Search with Vision API](examples/image_search_example) | Generates detailed captions for images using a vision model, embeds them, enables live-updating semantic search via FastAPI and served on a React frontend|
158
158
 
159
159
  More coming and stay tuned 👀!
@@ -137,7 +137,7 @@ It defines an index flow like this:
137
137
  | [Docs to Knowledge Graph](examples/docs_to_knowledge_graph) | Extract relationships from Markdown documents and build a knowledge graph |
138
138
  | [Embeddings to Qdrant](examples/text_embedding_qdrant) | Index documents in a Qdrant collection for semantic search |
139
139
  | [FastAPI Server with Docker](examples/fastapi_server_docker) | Run the semantic search server in a Dockerized FastAPI setup |
140
- | [Product_Taxonomy_Knowledge_Graph](examples/product_taxonomy_knowledge_graph) | Build knowledge graph for product recommendations |
140
+ | [Product Recommendation](examples/product_recommendation) | Build real-time product recommendations with LLM and graph database|
141
141
  | [Image Search with Vision API](examples/image_search_example) | Generates detailed captions for images using a vision model, embeds them, enables live-updating semantic search via FastAPI and served on a React frontend|
142
142
 
143
143
  More coming and stay tuned 👀!
@@ -3,4 +3,7 @@ name = "amazon-s3-text-embedding"
3
3
  version = "0.1.0"
4
4
  description = "Simple example for cocoindex: build embedding index based on Amazon S3 files."
5
5
  requires-python = ">=3.11"
6
- dependencies = ["cocoindex>=0.1.35", "python-dotenv>=1.0.1"]
6
+ dependencies = ["cocoindex>=0.1.39", "python-dotenv>=1.0.1"]
7
+
8
+ [tool.setuptools]
9
+ packages = []
@@ -3,4 +3,7 @@ name = "code-embedding"
3
3
  version = "0.1.0"
4
4
  description = "Simple example for cocoindex: build embedding index based on source code."
5
5
  requires-python = ">=3.10"
6
- dependencies = ["cocoindex>=0.1.35", "python-dotenv>=1.0.1"]
6
+ dependencies = ["cocoindex>=0.1.39", "python-dotenv>=1.0.1"]
7
+
8
+ [tool.setuptools]
9
+ packages = []
@@ -3,4 +3,7 @@ name = "manuals-to-kg"
3
3
  version = "0.1.0"
4
4
  description = "Simple example for cocoindex: extract triples from files and build knowledge graph."
5
5
  requires-python = ">=3.10"
6
- dependencies = ["cocoindex>=0.1.35", "python-dotenv>=1.0.1"]
6
+ dependencies = ["cocoindex>=0.1.39", "python-dotenv>=1.0.1"]
7
+
8
+ [tool.setuptools]
9
+ packages = []
@@ -3,4 +3,7 @@ name = "gdrive-text-embedding"
3
3
  version = "0.1.0"
4
4
  description = "Simple example for cocoindex: build embedding index based on Google Drive files."
5
5
  requires-python = ">=3.11"
6
- dependencies = ["cocoindex>=0.1.35", "python-dotenv>=1.0.1"]
6
+ dependencies = ["cocoindex>=0.1.39", "python-dotenv>=1.0.1"]
7
+
8
+ [tool.setuptools]
9
+ packages = []
@@ -4,7 +4,10 @@ version = "0.1.0"
4
4
  description = "Simple example for cocoindex: extract structured information from a Markdown file using LLM."
5
5
  requires-python = ">=3.10"
6
6
  dependencies = [
7
- "cocoindex>=0.1.35",
7
+ "cocoindex>=0.1.39",
8
8
  "python-dotenv>=1.0.1",
9
9
  "marker-pdf>=1.5.2",
10
10
  ]
11
+
12
+ [tool.setuptools]
13
+ packages = []
@@ -4,7 +4,10 @@ version = "0.1.0"
4
4
  description = "Simple example for cocoindex: build embedding index based on local PDF files."
5
5
  requires-python = ">=3.10"
6
6
  dependencies = [
7
- "cocoindex>=0.1.35",
7
+ "cocoindex>=0.1.39",
8
8
  "python-dotenv>=1.0.1",
9
9
  "marker-pdf>=1.5.2",
10
10
  ]
11
+
12
+ [tool.setuptools]
13
+ packages = []
@@ -1,6 +1,8 @@
1
- # Build Real-Time Product Recommendation based on LLM Taxonomy Extraction and Knowledge Graph
1
+ # Build Real-Time Recommendation Engine with LLM and Graph Database
2
2
 
3
- We will process a list of products and use LLM to extract the taxonomy and complimentary taxonomy for each product.
3
+ We will build a real-time product recommendation engine with LLM and graph database. In particular, we will use LLM to understand the category (taxonomy) of a product. In addition, we will use LLM to enumerate the complementary products - users are likely to buy together with the current product (pencil and notebook).
4
+
5
+ We will use Graph to explore the relationships between products that can be further used for product recommendations or labeling.
4
6
 
5
7
  Please drop [CocoIndex on Github](https://github.com/cocoindex-io/cocoindex) a star to support us and stay tuned for more updates. Thank you so much 🥥🤗. [![GitHub](https://img.shields.io/github/stars/cocoindex-io/cocoindex?color=5B5BD6)](https://github.com/cocoindex-io/cocoindex)
6
8
 
@@ -3,4 +3,7 @@ name = "cocoindex-ecommerce-taxonomy"
3
3
  version = "0.1.0"
4
4
  description = "Simple example for CocoIndex: extract taxonomy from e-commerce products and build knowledge graph."
5
5
  requires-python = ">=3.10"
6
- dependencies = ["cocoindex>=0.1.35", "python-dotenv>=1.0.1", "jinja2>=3.1.6"]
6
+ dependencies = ["cocoindex>=0.1.39", "python-dotenv>=1.0.1", "jinja2>=3.1.6"]
7
+
8
+ [tool.setuptools]
9
+ packages = []
@@ -2,6 +2,7 @@ from dotenv import load_dotenv
2
2
 
3
3
  import cocoindex
4
4
 
5
+ @cocoindex.transform_flow()
5
6
  def text_to_embedding(text: cocoindex.DataSlice) -> cocoindex.DataSlice:
6
7
  """
7
8
  Embed the text using a SentenceTransformer model.
@@ -3,4 +3,7 @@ name = "text-embedding"
3
3
  version = "0.1.0"
4
4
  description = "Simple example for cocoindex: build embedding index based on local text files."
5
5
  requires-python = ">=3.10"
6
- dependencies = ["cocoindex>=0.1.35", "python-dotenv>=1.0.1"]
6
+ dependencies = ["cocoindex>=0.1.39", "python-dotenv>=1.0.1"]
7
+
8
+ [tool.setuptools]
9
+ packages = []
@@ -3,4 +3,7 @@ name = "text-embedding-qdrant"
3
3
  version = "0.1.0"
4
4
  description = "Simple example for cocoindex: build embedding index based on local text files."
5
5
  requires-python = ">=3.10"
6
- dependencies = ["cocoindex>=0.1.35", "python-dotenv>=1.0.1"]
6
+ dependencies = ["cocoindex>=0.1.39", "python-dotenv>=1.0.1"]
7
+
8
+ [tool.setuptools]
9
+ packages = []
@@ -1,7 +1,7 @@
1
1
  """
2
2
  Cocoindex is a framework for building and running indexing pipelines.
3
3
  """
4
- from . import functions, query, sources, storages, cli
4
+ from . import functions, query, sources, storages, cli, utils
5
5
  from .flow import FlowBuilder, DataScope, DataSlice, Flow, flow_def, transform_flow
6
6
  from .flow import EvaluateAndDumpOptions, GeneratedField
7
7
  from .flow import update_all_flows_async, FlowLiveUpdater, FlowLiveUpdaterOptions
@@ -310,9 +310,8 @@ class _FlowBuilderState:
310
310
  engine_flow_builder: _engine.FlowBuilder
311
311
  field_name_builder: _NameBuilder
312
312
 
313
- def __init__(self, /, name: str | None = None):
314
- flow_name = _flow_name_builder.build_name(name, prefix="_flow_")
315
- self.engine_flow_builder = _engine.FlowBuilder(get_full_flow_name(flow_name))
313
+ def __init__(self, full_name: str):
314
+ self.engine_flow_builder = _engine.FlowBuilder(full_name)
316
315
  self.field_name_builder = _NameBuilder()
317
316
 
318
317
  def get_data_slice(self, v: Any) -> _engine.DataSlice:
@@ -464,9 +463,13 @@ class Flow:
464
463
  """
465
464
  A flow describes an indexing pipeline.
466
465
  """
466
+ _name: str
467
+ _full_name: str
467
468
  _lazy_engine_flow: Callable[[], _engine.Flow]
468
469
 
469
- def __init__(self, engine_flow_creator: Callable[[], _engine.Flow]):
470
+ def __init__(self, name: str, full_name: str, engine_flow_creator: Callable[[], _engine.Flow]):
471
+ self._name = name
472
+ self._full_name = full_name
470
473
  engine_flow = None
471
474
  lock = Lock()
472
475
  def _lazy_engine_flow() -> _engine.Flow:
@@ -497,7 +500,7 @@ class Flow:
497
500
  tree.children.append(section_node)
498
501
  return tree
499
502
 
500
- def _get_spec(self, verbose: bool = False) -> list[tuple[str, str, int]]:
503
+ def _get_spec(self, verbose: bool = False) -> _engine.RenderedSpec:
501
504
  return self._lazy_engine_flow().get_spec(output_mode="verbose" if verbose else "concise")
502
505
 
503
506
  def _get_schema(self) -> list[tuple[str, str, str]]:
@@ -509,12 +512,19 @@ class Flow:
509
512
  def __repr__(self):
510
513
  return repr(self._lazy_engine_flow())
511
514
 
515
+ @property
516
+ def name(self) -> str:
517
+ """
518
+ Get the name of the flow.
519
+ """
520
+ return self._name
521
+
512
522
  @property
513
523
  def full_name(self) -> str:
514
524
  """
515
525
  Get the full name of the flow.
516
526
  """
517
- return self._lazy_engine_flow().name()
527
+ return self._full_name
518
528
 
519
529
  def update(self) -> _engine.IndexUpdateInfo:
520
530
  """
@@ -555,14 +565,16 @@ def _create_lazy_flow(name: str | None, fl_def: Callable[[FlowBuilder, DataScope
555
565
  Create a flow without really building it yet.
556
566
  The flow will be built the first time when it's really needed.
557
567
  """
568
+ flow_name = _flow_name_builder.build_name(name, prefix="_flow_")
569
+ flow_full_name = get_full_flow_name(flow_name)
558
570
  def _create_engine_flow() -> _engine.Flow:
559
- flow_builder_state = _FlowBuilderState(name=name)
571
+ flow_builder_state = _FlowBuilderState(flow_full_name)
560
572
  root_scope = DataScope(
561
573
  flow_builder_state, flow_builder_state.engine_flow_builder.root_scope())
562
574
  fl_def(FlowBuilder(flow_builder_state), root_scope)
563
575
  return flow_builder_state.engine_flow_builder.build_flow(execution_context.event_loop)
564
576
 
565
- return Flow(_create_engine_flow)
577
+ return Flow(flow_name, flow_full_name, _create_engine_flow)
566
578
 
567
579
 
568
580
  _flows_lock = Lock()
@@ -695,7 +707,7 @@ class TransformFlow(Generic[T]):
695
707
  return self._lazy_flow_info
696
708
 
697
709
  async def _build_flow_info_async(self) -> TransformFlowInfo:
698
- flow_builder_state = _FlowBuilderState(name=self._flow_name)
710
+ flow_builder_state = _FlowBuilderState(self._flow_name)
699
711
  sig = inspect.signature(self._flow_fn)
700
712
  if len(sig.parameters) != len(self._flow_arg_types):
701
713
  raise ValueError(
@@ -0,0 +1,9 @@
1
+ from .flow import Flow
2
+ from .setting import get_app_namespace
3
+
4
+ def get_target_storage_default_name(flow: Flow, target_name: str, delimiter: str = "__") -> str:
5
+ """
6
+ Get the default name for a target.
7
+ It's used as the underlying storage name (e.g. a table, a collection, etc.) followed by most storage backends, if not explicitly specified.
8
+ """
9
+ return get_app_namespace(trailing_delimiter=delimiter) + flow.name + delimiter + target_name
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes