From f59baf3e076e73345b67f3402074dd3ac0571eb5 Mon Sep 17 00:00:00 2001 From: Ivan Despot <66276597+g-despot@users.noreply.github.com> Date: Wed, 17 Sep 2025 11:28:41 +0200 Subject: [PATCH 1/8] Prepare for Academy removal --- .vscode/markdown.code-snippets | 88 -- docs/academy/_customization/index.md | 20 - .../_snippets/academy.clients.graphql.raw.mdx | 50 - docs/academy/_snippets/example_schema.mdx | 83 -- docs/academy/_snippets/preview.mdx | 5 - docs/academy/deployment/_category_.json | 4 - .../deployment/k8s/10_kubernetes_basics.mdx | 122 -- .../deployment/k8s/30_setup_weaviate.mdx | 149 --- .../deployment/k8s/50_access_weaviate.mdx | 178 --- docs/academy/deployment/k8s/70_multi_node.mdx | 173 --- docs/academy/deployment/k8s/90_next_steps.mdx | 48 - .../deployment/k8s/_snippets/connect.py | 28 - docs/academy/deployment/k8s/index.md | 22 - docs/academy/index.mdx | 20 - docs/academy/js/10_set_up_typescript.mdx | 76 -- docs/academy/js/_category_.json | 4 - docs/academy/js/_snippets/cta_socials.mdx | 3 - .../academy/js/_snippets/intro_next_steps.mdx | 32 - .../js/_snippets/intro_next_steps_js.mdx | 32 - docs/academy/js/img/js-ts-weaviate.png | Bin 6884 -> 0 bytes .../standalone/_want-stack/_snippets/index.ts | 0 .../js/standalone/_want-stack/index.md | 62 - .../client-server/10_why-client-server.mdx | 37 - .../20_building-client-server.mdx | 133 -- .../standalone/client-server/30_fullstack.mdx | 135 -- .../client-server/_img/architecture.jpg | Bin 114935 -> 0 bytes .../standalone/client-server/_img/backend.jpg | Bin 76182 -> 0 bytes .../client-server/_img/fullstack.jpg | Bin 79667 -> 0 bytes .../client-server/_snippets/20_backend.js | 62 - .../client-server/_snippets/30_fullstack.js | 67 - .../client-server/_snippets/index.html | 83 -- .../js/standalone/client-server/index.md | 44 - docs/academy/js/standalone/index.md | 16 - .../using-ml-models/10_embedding.mdx | 140 -- .../using-ml-models/20_generative.mdx | 148 -- .../using-ml-models/_img/embedding-models.jpg | Bin 69842 -> 0 bytes .../using-ml-models/_img/generative.jpg | Bin 60234 -> 0 bytes .../using-ml-models/_img/multimodal-gen.jpg | Bin 72970 -> 0 bytes .../using-ml-models/_img/multimodal.jpg | Bin 68505 -> 0 bytes .../using-ml-models/_img/unimodal-gen.jpg | Bin 73605 -> 0 bytes .../using-ml-models/_img/unimodal.jpg | Bin 31581 -> 0 bytes .../using-ml-models/_snippets/10_embedding.ts | 71 - .../_snippets/20_generative.ts | 81 -- .../js/standalone/using-ml-models/index.md | 44 - .../js/standalone/which-search/05_review.mdx | 118 -- .../standalone/which-search/10_strengths.mdx | 203 --- .../standalone/which-search/20_selection.mdx | 104 -- .../standalone/which-search/30_strategies.mdx | 162 --- .../which-search/_30_improve_search.mdx | 13 - .../which-search/_img/multimodal_example.png | Bin 50293 -> 0 bytes .../which-search/_snippets/05_review.ts | 112 -- .../which-search/_snippets/10_strengths.ts | 164 --- .../which-search/_snippets/20_selection.ts | 0 .../which-search/_snippets/30_strategies.ts | 127 -- .../js/standalone/which-search/index.md | 50 - .../101_setup_weaviate/10_client.mdx | 37 - .../20_create_instance/10_create_wcs.mdx | 67 - .../20_create_instance/20_create_docker.mdx | 93 -- .../20_create_instance/index.mdx | 19 - .../101_setup_weaviate/30_communicate.mdx | 64 - .../101_setup_weaviate/index.mdx | 26 - .../102_mm_collections/10_preparation.mdx | 36 - .../20_create_collection.mdx | 89 -- .../102_mm_collections/30_import_data.mdx | 107 -- .../102_mm_collections/index.mdx | 26 - .../103_mm_searches/10_multimodal.mdx | 145 -- .../103_mm_searches/20_keyword_hybrid.mdx | 105 -- .../103_mm_searches/30_filters.mdx | 55 - .../103_mm_searches/index.mdx | 26 - .../104_mm_rag/10_setup.mdx | 40 - .../104_mm_rag/20_single_prompt.mdx | 57 - .../104_mm_rag/30_grouped_task.mdx | 60 - .../104_mm_rag/index.mdx | 26 - .../900_next_steps.mdx | 7 - .../_snippets/101_connect.mts | 171 --- .../_snippets/102_collection.mts | 210 --- .../_snippets/103_searches.mts | 154 --- .../_snippets/104_rag.mts | 88 -- .../js/starter_multimodal_data/index.md | 24 - .../101_setup_weaviate/10_client.mdx | 36 - .../20_create_instance/10_create_wcs.mdx | 67 - .../20_create_instance/20_create_docker.mdx | 90 -- .../20_create_instance/index.mdx | 19 - .../101_setup_weaviate/30_communicate.mdx | 64 - .../101_setup_weaviate/index.mdx | 24 - .../102_text_collections/10_preparation.mdx | 41 - .../20_create_collection.mdx | 86 -- .../102_text_collections/30_import_data.mdx | 94 -- .../102_text_collections/index.mdx | 24 - .../103_text_searches/10_semantic.mdx | 67 - .../103_text_searches/20_keyword_hybrid.mdx | 105 -- .../103_text_searches/30_filters.mdx | 55 - .../103_text_searches/index.mdx | 24 - .../104_text_rag/10_setup.mdx | 40 - .../104_text_rag/20_single_prompt.mdx | 57 - .../104_text_rag/30_grouped_task.mdx | 60 - .../starter_text_data/104_text_rag/index.mdx | 24 - .../js/starter_text_data/900_next_steps.mdx | 7 - .../_snippets/101_connect.ts | 172 --- .../_snippets/102_collection.ts | 165 --- .../_snippets/103_searches.ts | 108 -- .../js/starter_text_data/_snippets/104_rag.ts | 72 - docs/academy/js/starter_text_data/index.md | 23 - docs/academy/py/10_set_up_python.mdx | 143 -- docs/academy/py/_category_.json | 4 - docs/academy/py/_snippets/10_setup_python.py | 5 - docs/academy/py/_snippets/cta_socials.mdx | 3 - .../academy/py/_snippets/intro_next_steps.mdx | 32 - docs/academy/py/compression/100_pq.mdx | 82 -- docs/academy/py/compression/200_bq.mdx | 68 - docs/academy/py/compression/300_strategy.mdx | 43 - .../academy/py/compression/900_next_steps.mdx | 26 - .../py/compression/_snippets/100_pq.py | 79 -- .../py/compression/_snippets/200_bq.py | 76 -- .../py/compression/_snippets/pq_diagram.png | Bin 35238 -> 0 bytes docs/academy/py/compression/index.md | 27 - .../py/img/Weaviate-release-1-22-python.png | Bin 29695 -> 0 bytes docs/academy/py/multitenancy/100_overview.mdx | 88 -- docs/academy/py/multitenancy/200_setup.mdx | 308 ----- .../py/multitenancy/300_tenant_data.mdx | 171 --- .../py/multitenancy/400_manage_tenants.mdx | 200 --- .../py/multitenancy/900_next_steps.mdx | 42 - .../py/multitenancy/_snippets/100_config.py | 355 ----- .../multitenancy/img/multi-tenancy-dark.png | Bin 30393 -> 0 bytes .../multitenancy/img/multi-tenancy-light.png | Bin 29781 -> 0 bytes docs/academy/py/multitenancy/index.md | 29 - .../101_nv_preparation/index.mdx | 164 --- .../20_create_collection.mdx | 64 - .../102_nv_collections/30_import_data.mdx | 52 - .../102_nv_collections/index.mdx | 24 - .../103_nv_queries/10_searches.mdx | 183 --- .../103_nv_queries/20_use_cases.mdx | 132 -- .../py/named_vectors/103_nv_queries/index.mdx | 24 - .../py/named_vectors/900_next_steps.mdx | 25 - .../py/named_vectors/_snippets/101_connect.py | 531 -------- .../named_vectors/_snippets/102_collection.py | 155 --- .../named_vectors/_snippets/103_searches.py | 204 --- .../py/named_vectors/_snippets/104_usecase.py | 91 -- docs/academy/py/named_vectors/index.md | 27 - .../10_vectorization_in_weaviate.mdx | 8 - .../20_requirements.mdx | 8 - .../30_performance.mdx | 10 - .../40_compression.mdx | 8 - .../50_use_in_weaviate.mdx | 7 - .../_202_vectorizer_selection/index.mdx | 47 - .../_203_indexing/_60_indexing_options.mdx | 33 - .../py/standalone/_203_indexing/index.mdx | 45 - .../standalone/_others/_inside_weaviate.mdx | 318 ----- .../standalone/_others/_vectorizer_intro.md | 39 - .../standalone/chunking/10_introduction.mdx | 130 -- .../py/standalone/chunking/20_how_1.mdx | 199 --- .../py/standalone/chunking/25_how_2.mdx | 202 --- .../chunking/30_example_chunking.mdx | 236 ---- .../standalone/chunking/40_example_search.mdx | 325 ----- .../standalone/chunking/50_considerations.mdx | 171 --- .../py/standalone/chunking/90_wrap_up.mdx | 34 - .../20_chunking_methods.1.fixed.size.py | 84 -- .../20_chunking_methods.2.variable.size.py | 66 - .../20_chunking_methods.3.mixed.strategy.py | 50 - .../chunking/_snippets/30_example.py | 571 -------- .../chunking/_snippets/what-is-git.asc | 109 -- docs/academy/py/standalone/chunking/index.mdx | 58 - docs/academy/py/standalone/index.md | 17 - .../py/standalone/which_search/05_review.mdx | 119 -- .../standalone/which_search/10_strengths.mdx | 204 --- .../standalone/which_search/20_selection.mdx | 105 -- .../standalone/which_search/30_strategies.mdx | 210 --- .../which_search/_30_improve_search.mdx | 13 - .../which_search/_img/multimodal_example.png | Bin 50293 -> 0 bytes .../which_search/_snippets/05_review.py | 105 -- .../which_search/_snippets/10_strengths.py | 160 --- .../which_search/_snippets/20_selection.py | 0 .../which_search/_snippets/30_strategies.py | 135 -- .../py/standalone/which_search/index.mdx | 53 - .../101_setup_weaviate/10_client.mdx | 36 - .../20_create_instance/10_create_wcs.mdx | 67 - .../20_create_instance/20_create_docker.mdx | 90 -- .../20_create_instance/index.mdx | 19 - .../101_setup_weaviate/30_communicate.mdx | 65 - .../101_setup_weaviate/index.mdx | 24 - .../102_object_collections/10_preparation.mdx | 36 - .../20_create_collection.mdx | 85 -- .../25_generate_vectors.mdx | 70 - .../102_object_collections/30_import_data.mdx | 94 -- .../102_object_collections/index.mdx | 24 - .../103_object_searches/10_vector.mdx | 76 -- .../103_object_searches/20_keyword_hybrid.mdx | 107 -- .../103_object_searches/30_filters.mdx | 55 - .../103_object_searches/index.mdx | 24 - .../104_object_rag/10_setup.mdx | 40 - .../104_object_rag/20_single_prompt.mdx | 57 - .../104_object_rag/30_grouped_task.mdx | 60 - .../104_object_rag/index.mdx | 24 - .../starter_custom_vectors/900_next_steps.mdx | 7 - .../_snippets/101_connect.py | 159 --- .../_snippets/102_collection.py | 197 --- .../_snippets/103_10_vector.py | 76 -- .../_snippets/103_20_searches.py | 147 -- .../_snippets/104_rag.py | 106 -- .../py/starter_custom_vectors/index.md | 23 - .../101_setup_weaviate/10_client.mdx | 36 - .../101_setup_weaviate/20_create_docker.mdx | 98 -- .../101_setup_weaviate/30_communicate.mdx | 67 - .../101_setup_weaviate/index.mdx | 24 - .../102_mm_collections/10_preparation.mdx | 36 - .../20_create_collection.mdx | 91 -- .../102_mm_collections/30_import_data.mdx | 111 -- .../102_mm_collections/index.mdx | 24 - .../103_mm_searches/10_multimodal.mdx | 148 -- .../103_mm_searches/20_keyword_hybrid.mdx | 105 -- .../103_mm_searches/30_filters.mdx | 55 - .../103_mm_searches/index.mdx | 24 - .../104_mm_rag/10_setup.mdx | 40 - .../104_mm_rag/20_single_prompt.mdx | 57 - .../104_mm_rag/30_grouped_task.mdx | 60 - .../104_mm_rag/index.mdx | 24 - .../900_next_steps.mdx | 7 - .../_snippets/101_connect.py | 523 -------- .../_snippets/102_collection.py | 146 -- .../_snippets/103_searches.py | 180 --- .../_snippets/104_rag.py | 89 -- .../py/starter_multimodal_data/index.md | 24 - .../101_setup_weaviate/10_client.mdx | 36 - .../20_create_instance/10_create_wcs.mdx | 67 - .../20_create_instance/20_create_docker.mdx | 90 -- .../20_create_instance/index.mdx | 19 - .../101_setup_weaviate/30_communicate.mdx | 65 - .../101_setup_weaviate/index.mdx | 24 - .../102_text_collections/10_preparation.mdx | 41 - .../20_create_collection.mdx | 87 -- .../102_text_collections/30_import_data.mdx | 98 -- .../102_text_collections/index.mdx | 24 - .../103_text_searches/10_semantic.mdx | 67 - .../103_text_searches/20_keyword_hybrid.mdx | 105 -- .../103_text_searches/30_filters.mdx | 55 - .../103_text_searches/index.mdx | 24 - .../104_text_rag/10_setup.mdx | 40 - .../104_text_rag/20_single_prompt.mdx | 57 - .../104_text_rag/30_grouped_task.mdx | 60 - .../starter_text_data/104_text_rag/index.mdx | 24 - .../py/starter_text_data/900_next_steps.mdx | 7 - .../_snippets/101_connect.py | 161 --- .../_snippets/102_collection.py | 128 -- .../_snippets/103_searches.py | 139 -- .../py/starter_text_data/_snippets/104_rag.py | 78 -- docs/academy/py/starter_text_data/index.md | 23 - .../py/tmp_images/academy_placeholder.jpg | Bin 26622 -> 0 bytes docs/academy/py/tokenization/100_basics.mdx | 56 - docs/academy/py/tokenization/200_options.mdx | 143 -- docs/academy/py/tokenization/300_filters.mdx | 220 --- docs/academy/py/tokenization/400_searches.mdx | 195 --- .../py/tokenization/900_next_steps.mdx | 30 - .../_snippets/310_create_collection.py | 44 - .../tokenization/_snippets/315_add_objects.py | 55 - .../py/tokenization/_snippets/320_filters.py | 210 --- .../py/tokenization/_snippets/400_searches.py | 234 ---- docs/academy/py/tokenization/index.md | 29 - docs/academy/py/vector_index/100_overview.mdx | 95 -- docs/academy/py/vector_index/200_hnsw.mdx | 195 --- docs/academy/py/vector_index/220_flat.mdx | 75 -- docs/academy/py/vector_index/250_dynamic.mdx | 80 -- .../py/vector_index/900_next_steps.mdx | 37 - .../py/vector_index/_snippets/100_config.py | 136 -- docs/academy/py/vector_index/_snippets/ef.png | Bin 68865 -> 0 bytes .../vector_index/_snippets/efConstruction.png | Bin 53852 -> 0 bytes .../vector_index/_snippets/hnsw_diagram.png | Bin 44020 -> 0 bytes .../vector_index/_snippets/maxConnections.png | Bin 53161 -> 0 bytes .../py/vector_index/img/vector_distance.png | Bin 39145 -> 0 bytes docs/academy/py/vector_index/index.md | 29 - .../101_hello_weaviate/10_intro_weaviate.mdx | 290 ---- .../15_overview_vectors.mdx | 110 -- .../101_hello_weaviate/20_examples_1.mdx | 226 ---- .../101_hello_weaviate/25_examples_2.mdx | 146 -- .../101_hello_weaviate/40_set_up.mdx | 212 --- .../101_hello_weaviate/50_hands_on.mdx | 281 ---- .../101_hello_weaviate/90_wrap_up.mdx | 28 - .../_snippets/academy.clients.graphql.get.mdx | 115 -- .../academy.clients.rest.object.get.mdx | 106 -- ...academy.hello.check.connection.edudemo.mdx | 62 - .../academy.hello.check.connection.mdx | 59 - .../academy.hello.client.instantiation.mdx | 26 - .../academy.hello.query.generative.search.mdx | 48 - ...academy.hello.query.question.answering.mdx | 54 - .../academy.hello.query.vector.search.mdx | 64 - .../zero_to_mvp/101_hello_weaviate/index.mdx | 46 - .../py/zero_to_mvp/102_queries_1/10_get.mdx | 298 ----- .../102_queries_1/20_vector_parameters.mdx | 299 ----- .../102_queries_1/40_aggregate.mdx | 357 ----- .../zero_to_mvp/102_queries_1/50_filters.mdx | 365 ----- .../102_queries_1/80_inside_queries_1.mdx | 221 --- .../zero_to_mvp/102_queries_1/90_wrap_up.mdx | 27 - .../102_queries_1/_snippets/10_get.py | 40 - .../academy.queries.aggregate.groupby.mdx | 47 - ...academy.queries.aggregate.standalone.2.mdx | 36 - .../academy.queries.aggregate.standalone.mdx | 31 - .../academy.queries.aggregate.syntax.mdx | 31 - ...cademy.queries.aggregate.with.neartext.mdx | 38 - ...ademy.queries.filter.multiple.operands.mdx | 75 -- ...emy.queries.filter.pagination.nearText.mdx | 39 - ...demy.queries.filter.pagination.related.mdx | 38 - .../academy.queries.filter.where.greater.mdx | 54 - .../academy.queries.filter.where.like.mdx | 53 - .../academy.queries.get.standalone.mdx | 0 .../_snippets/academy.queries.get.syntax.mdx | 30 - .../academy.queries.get.with.additional.mdx | 44 - .../academy.queries.nearObject.simple.mdx | 38 - .../academy.queries.nearText.simple.mdx | 38 - .../academy.queries.nearVector.simple.mdx | 40 - ...ademy.queries.nearVector.simple.vector.mdx | 1 - ...eries.nearobject.equivalent.nearvector.mdx | 58 - .../academy.queries.nearobject.example.mdx | 44 - ...queries.neartext.equivalent.nearvector.mdx | 44 - .../academy.queries.neartext.example.mdx | 44 - .../academy.queries.schema.short.mdx | 28 - .../_snippets/meerkats.vector.mdx | 1 - .../_snippets/popular.90s.comedy.vector.mdx | 1 - .../images/search-conceptual-dark.png | Bin 149123 -> 0 bytes .../py/zero_to_mvp/102_queries_1/index.mdx | 48 - .../103_schema_and_imports/05_preparation.mdx | 108 -- .../10_data_structure.mdx | 311 ----- .../103_schema_and_imports/20_schema.mdx | 249 ---- .../103_schema_and_imports/30_import.mdx | 189 --- .../103_schema_and_imports/40_example.mdx | 289 ---- .../103_schema_and_imports/90_wrap_up.mdx | 25 - .../_snippets/05_create_instance.py | 38 - .../_snippets/20_schema.py | 258 ---- .../_snippets/30_import.py | 112 -- .../_snippets/40_import_example_1.py | 341 ----- .../academy_103_import_process_conceptual.png | Bin 97796 -> 0 bytes ...y_103_import_process_conceptual_simple.png | Bin 37464 -> 0 bytes .../103_schema_and_imports/index.mdx | 49 - .../py/zero_to_mvp/104_queries_2/10_bm25.mdx | 213 --- .../zero_to_mvp/104_queries_2/20_hybrid.mdx | 148 -- .../104_queries_2/30_generative.mdx | 242 ---- .../zero_to_mvp/104_queries_2/90_wrap_up.mdx | 26 - .../py/zero_to_mvp/104_queries_2/_40_qna.mdx | 152 --- .../104_queries_2/_snippets/10_bm25.py | 152 --- .../104_queries_2/_snippets/20_hybrid.py | 77 -- .../104_queries_2/_snippets/30_generative.py | 207 --- .../104_queries_2/_snippets/40_qna.py | 112 -- .../py/zero_to_mvp/104_queries_2/index.mdx | 51 - .../_000_template/_TEMPLATE_10_body.mdx | 83 -- .../_000_template/_TEMPLATE_90_wrap_up.mdx | 17 - .../_000_template/_TEMPLATE_index.mdx | 28 - .../50_cross_references.mdx | 29 - .../70_import_example_2.mdx | 32 - .../_104_vectorization_essentials/index.mdx | 28 - .../intro_vectors.mdx | 155 --- .../vector_parameters.mdx | 120 -- .../vector_search.mdx | 144 -- .../py/zero_to_mvp/_106_data_import/index.md | 8 - .../zero_to_mvp/_107_crud_operations/index.md | 8 - .../py/zero_to_mvp/_108_modules/index.mdx | 8 - .../_109_tmp_leftovers/102_arguments.mdx | 144 -- .../_109_tmp_leftovers/_graphql.mdx | 159 --- .../_109_tmp_leftovers/_leftovers.mdx | 531 -------- .../py/zero_to_mvp/_109_tmp_leftovers/tmp.mdx | 77 -- .../combining_models.md | 12 - .../common_model_types.md | 100 -- .../_999_vectorizer_selection_1/index.mdx | 8 - .../py/zero_to_mvp/_snippets/deprecation.md | 5 - .../academy/py/zero_to_mvp/_snippets/setup.py | 87 -- docs/academy/py/zero_to_mvp/index.md | 28 - docs/academy/py/zero_to_mvp/setup.mdx | 192 --- .../10_introduction.mdx | 99 -- .../20_inside_ai_models.mdx | 143 -- .../30_generative_models.mdx | 134 -- .../40_embedding_models.mdx | 136 -- .../50_model_training.mdx | 94 -- .../60_using_models.mdx | 500 ------- .../010_ai_models_deep_dive/70_strategy.mdx | 131 -- .../_img/10_chat_example_1.png | Bin 117937 -> 0 bytes .../_img/10_chat_example_2.png | Bin 122792 -> 0 bytes .../_img/10_copilot_example.png | Bin 100016 -> 0 bytes .../_img/10_cute_dog.png | Bin 52744 -> 0 bytes .../_img/10_generated_unicorn.png | Bin 442134 -> 0 bytes .../_img/model_cards.png | Bin 203507 -> 0 bytes .../_img/nn_explained_01_basic.png | Bin 27805 -> 0 bytes .../_img/nn_explained_01_basic_dark.png | Bin 28002 -> 0 bytes .../_img/nn_explained_05_basic_labelling.png | Bin 40764 -> 0 bytes .../nn_explained_05_basic_labelling_dark.png | Bin 40543 -> 0 bytes .../nn_explained_10_inputs_and_outputs.png | Bin 59033 -> 0 bytes ...n_explained_10_inputs_and_outputs_dark.png | Bin 60205 -> 0 bytes .../_img/nn_explained_20_node_calculation.png | Bin 49105 -> 0 bytes .../nn_explained_20_node_calculation_dark.png | Bin 47955 -> 0 bytes .../_img/nn_explained_25_total_parameters.png | Bin 60845 -> 0 bytes .../nn_explained_25_total_parameters_dark.png | Bin 61532 -> 0 bytes .../_img/nn_explained_30_final_output.png | Bin 51123 -> 0 bytes .../nn_explained_30_final_output_dark.png | Bin 50526 -> 0 bytes .../nn_explained_40_generative_models.png | Bin 42975 -> 0 bytes ...nn_explained_40_generative_models_dark.png | Bin 42645 -> 0 bytes .../_img/nn_explained_45_auto_regressive.png | Bin 52551 -> 0 bytes .../nn_explained_45_auto_regressive_dark.png | Bin 52558 -> 0 bytes .../_img/nn_explained_50_embedding_models.png | Bin 54028 -> 0 bytes .../nn_explained_50_embedding_models_dark.png | Bin 52163 -> 0 bytes .../_img/nn_explained_55_backprop.png | Bin 61931 -> 0 bytes .../_img/nn_explained_55_backprop_dark.png | Bin 62069 -> 0 bytes .../_img/nn_explained_80_inference.png | Bin 53701 -> 0 bytes .../_img/nn_explained_80_inference_dark.png | Bin 53013 -> 0 bytes .../_img/tokenization.png | Bin 7189 -> 0 bytes .../theory/010_ai_models_deep_dive/index.mdx | 33 - .../101_hello_weaviate/10_intro_weaviate.mdx | 173 --- .../15_overview_vectors.mdx | 110 -- .../101_hello_weaviate/20_examples_1.mdx | 96 -- .../101_hello_weaviate/25_examples_2.mdx | 109 -- .../101_hello_weaviate/90_next_steps.mdx | 40 - .../theory/101_hello_weaviate/index.mdx | 42 - .../academy/theory/150_search_types/_index.md | 27 - .../academy/theory/150_search_types/_notes.md | 52 - .../10_introduction.mdx | 107 -- .../20_workflow_selection.mdx | 53 - .../22_identify_needs.mdx | 139 -- .../24_initial_screening.mdx | 150 --- .../26_detailed_eval.mdx | 173 --- .../28_benchmark_example.mdx | 266 ---- .../40_periodic_re_evaluation.mdx | 28 - .../_img/candidate_documents.png | Bin 158022 -> 0 bytes .../embedding_eval_example_1_fasttext.png | Bin 262629 -> 0 bytes .../_img/embedding_eval_example_2_arctic2.png | Bin 276223 -> 0 bytes .../_img/embedding_model_evaluation.png | Bin 112412 -> 0 bytes .../embedding_model_selection_workflow.png | Bin 36571 -> 0 bytes ...mbedding_model_selection_workflow_dark.png | Bin 34960 -> 0 bytes .../_img/identify_needs_overview.png | Bin 189730 -> 0 bytes .../_img/memory-reqs-1m-docs.png | Bin 26734 -> 0 bytes .../_img/mieb_by_any_to_any.png | Bin 143325 -> 0 bytes .../_img/model_cards.png | Bin 203507 -> 0 bytes .../_img/mteb-benchmarks-by-task-general.png | Bin 57510 -> 0 bytes .../mteb-benchmarks-by-task-specialized.png | Bin 60334 -> 0 bytes .../_img/mteb-tasks-example.png | Bin 69068 -> 0 bytes .../_img/mteb_by_retrieval.png | Bin 114544 -> 0 bytes .../180_embedding_model_selection/index.mdx | 33 - docs/academy/theory/_category_.json | 4 - docs/cloud/index.mdx | 4 - docs/cloud/manage-clusters/connect.mdx | 4 - docs/cloud/platform/multi-factor-auth.mdx | 4 - docs/cloud/platform/support-levels.mdx | 4 - .../platform/users-and-organizations.mdx | 4 - .../weaviate-docs/style-guide.mdx | 2 - docs/weaviate/concepts/vector-quantization.md | 1 - .../manage-collections/tenant-states.mdx | 6 +- docs/weaviate/quickstart/index.md | 2 +- docs/weaviate/quickstart/local.md | 2 +- docs/weaviate/search/bm25.md | 1 - docs/weaviate/search/hybrid.md | 1 - .../managing-resources/indexing.mdx | 6 - docusaurus.config.js | 2 +- secondaryNavbar.js | 15 - sidebars.js | 6 - src/components/Academy/academy.css | 112 -- src/components/Academy/card.jsx | 71 - src/components/Academy/courseData.js | 366 ----- src/components/Academy/courseUnits.jsx | 29 - src/components/Academy/coursecards.jsx | 30 - src/components/Academy/courses.jsx | 14 - src/components/Academy/learningGoals.jsx | 53 - src/components/Academy/learningGoalsExp.mdx | 8 - src/components/Academy/quiz.js | 70 - src/components/Academy/unitData.js | 1189 ----------------- src/components/Academy/unitcards.jsx | 27 - src/components/Academy/units.jsx | 31 - src/components/scriptSwitch/index.jsx | 46 - src/css/blog-and-docs.scss | 21 - src/theme/Root.js | 2 +- tests/test_academy.py | 80 -- 464 files changed, 7 insertions(+), 35835 deletions(-) delete mode 100644 docs/academy/_customization/index.md delete mode 100644 docs/academy/_snippets/academy.clients.graphql.raw.mdx delete mode 100644 docs/academy/_snippets/example_schema.mdx delete mode 100644 docs/academy/_snippets/preview.mdx delete mode 100644 docs/academy/deployment/_category_.json delete mode 100644 docs/academy/deployment/k8s/10_kubernetes_basics.mdx delete mode 100644 docs/academy/deployment/k8s/30_setup_weaviate.mdx delete mode 100644 docs/academy/deployment/k8s/50_access_weaviate.mdx delete mode 100644 docs/academy/deployment/k8s/70_multi_node.mdx delete mode 100644 docs/academy/deployment/k8s/90_next_steps.mdx delete mode 100644 docs/academy/deployment/k8s/_snippets/connect.py delete mode 100644 docs/academy/deployment/k8s/index.md delete mode 100644 docs/academy/index.mdx delete mode 100644 docs/academy/js/10_set_up_typescript.mdx delete mode 100644 docs/academy/js/_category_.json delete mode 100644 docs/academy/js/_snippets/cta_socials.mdx delete mode 100644 docs/academy/js/_snippets/intro_next_steps.mdx delete mode 100644 docs/academy/js/_snippets/intro_next_steps_js.mdx delete mode 100644 docs/academy/js/img/js-ts-weaviate.png delete mode 100644 docs/academy/js/standalone/_want-stack/_snippets/index.ts delete mode 100644 docs/academy/js/standalone/_want-stack/index.md delete mode 100644 docs/academy/js/standalone/client-server/10_why-client-server.mdx delete mode 100644 docs/academy/js/standalone/client-server/20_building-client-server.mdx delete mode 100644 docs/academy/js/standalone/client-server/30_fullstack.mdx delete mode 100644 docs/academy/js/standalone/client-server/_img/architecture.jpg delete mode 100644 docs/academy/js/standalone/client-server/_img/backend.jpg delete mode 100644 docs/academy/js/standalone/client-server/_img/fullstack.jpg delete mode 100644 docs/academy/js/standalone/client-server/_snippets/20_backend.js delete mode 100644 docs/academy/js/standalone/client-server/_snippets/30_fullstack.js delete mode 100644 docs/academy/js/standalone/client-server/_snippets/index.html delete mode 100644 docs/academy/js/standalone/client-server/index.md delete mode 100644 docs/academy/js/standalone/index.md delete mode 100644 docs/academy/js/standalone/using-ml-models/10_embedding.mdx delete mode 100644 docs/academy/js/standalone/using-ml-models/20_generative.mdx delete mode 100644 docs/academy/js/standalone/using-ml-models/_img/embedding-models.jpg delete mode 100644 docs/academy/js/standalone/using-ml-models/_img/generative.jpg delete mode 100644 docs/academy/js/standalone/using-ml-models/_img/multimodal-gen.jpg delete mode 100644 docs/academy/js/standalone/using-ml-models/_img/multimodal.jpg delete mode 100644 docs/academy/js/standalone/using-ml-models/_img/unimodal-gen.jpg delete mode 100644 docs/academy/js/standalone/using-ml-models/_img/unimodal.jpg delete mode 100644 docs/academy/js/standalone/using-ml-models/_snippets/10_embedding.ts delete mode 100644 docs/academy/js/standalone/using-ml-models/_snippets/20_generative.ts delete mode 100644 docs/academy/js/standalone/using-ml-models/index.md delete mode 100644 docs/academy/js/standalone/which-search/05_review.mdx delete mode 100644 docs/academy/js/standalone/which-search/10_strengths.mdx delete mode 100644 docs/academy/js/standalone/which-search/20_selection.mdx delete mode 100644 docs/academy/js/standalone/which-search/30_strategies.mdx delete mode 100644 docs/academy/js/standalone/which-search/_30_improve_search.mdx delete mode 100644 docs/academy/js/standalone/which-search/_img/multimodal_example.png delete mode 100644 docs/academy/js/standalone/which-search/_snippets/05_review.ts delete mode 100644 docs/academy/js/standalone/which-search/_snippets/10_strengths.ts delete mode 100644 docs/academy/js/standalone/which-search/_snippets/20_selection.ts delete mode 100644 docs/academy/js/standalone/which-search/_snippets/30_strategies.ts delete mode 100644 docs/academy/js/standalone/which-search/index.md delete mode 100644 docs/academy/js/starter_multimodal_data/101_setup_weaviate/10_client.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/101_setup_weaviate/20_create_instance/10_create_wcs.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/101_setup_weaviate/20_create_instance/20_create_docker.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/101_setup_weaviate/20_create_instance/index.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/101_setup_weaviate/30_communicate.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/101_setup_weaviate/index.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/102_mm_collections/10_preparation.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/102_mm_collections/20_create_collection.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/102_mm_collections/30_import_data.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/102_mm_collections/index.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/103_mm_searches/10_multimodal.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/103_mm_searches/20_keyword_hybrid.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/103_mm_searches/30_filters.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/103_mm_searches/index.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/104_mm_rag/10_setup.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/104_mm_rag/20_single_prompt.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/104_mm_rag/30_grouped_task.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/104_mm_rag/index.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/900_next_steps.mdx delete mode 100644 docs/academy/js/starter_multimodal_data/_snippets/101_connect.mts delete mode 100644 docs/academy/js/starter_multimodal_data/_snippets/102_collection.mts delete mode 100644 docs/academy/js/starter_multimodal_data/_snippets/103_searches.mts delete mode 100644 docs/academy/js/starter_multimodal_data/_snippets/104_rag.mts delete mode 100644 docs/academy/js/starter_multimodal_data/index.md delete mode 100644 docs/academy/js/starter_text_data/101_setup_weaviate/10_client.mdx delete mode 100644 docs/academy/js/starter_text_data/101_setup_weaviate/20_create_instance/10_create_wcs.mdx delete mode 100644 docs/academy/js/starter_text_data/101_setup_weaviate/20_create_instance/20_create_docker.mdx delete mode 100644 docs/academy/js/starter_text_data/101_setup_weaviate/20_create_instance/index.mdx delete mode 100644 docs/academy/js/starter_text_data/101_setup_weaviate/30_communicate.mdx delete mode 100644 docs/academy/js/starter_text_data/101_setup_weaviate/index.mdx delete mode 100644 docs/academy/js/starter_text_data/102_text_collections/10_preparation.mdx delete mode 100644 docs/academy/js/starter_text_data/102_text_collections/20_create_collection.mdx delete mode 100644 docs/academy/js/starter_text_data/102_text_collections/30_import_data.mdx delete mode 100644 docs/academy/js/starter_text_data/102_text_collections/index.mdx delete mode 100644 docs/academy/js/starter_text_data/103_text_searches/10_semantic.mdx delete mode 100644 docs/academy/js/starter_text_data/103_text_searches/20_keyword_hybrid.mdx delete mode 100644 docs/academy/js/starter_text_data/103_text_searches/30_filters.mdx delete mode 100644 docs/academy/js/starter_text_data/103_text_searches/index.mdx delete mode 100644 docs/academy/js/starter_text_data/104_text_rag/10_setup.mdx delete mode 100644 docs/academy/js/starter_text_data/104_text_rag/20_single_prompt.mdx delete mode 100644 docs/academy/js/starter_text_data/104_text_rag/30_grouped_task.mdx delete mode 100644 docs/academy/js/starter_text_data/104_text_rag/index.mdx delete mode 100644 docs/academy/js/starter_text_data/900_next_steps.mdx delete mode 100644 docs/academy/js/starter_text_data/_snippets/101_connect.ts delete mode 100644 docs/academy/js/starter_text_data/_snippets/102_collection.ts delete mode 100644 docs/academy/js/starter_text_data/_snippets/103_searches.ts delete mode 100644 docs/academy/js/starter_text_data/_snippets/104_rag.ts delete mode 100644 docs/academy/js/starter_text_data/index.md delete mode 100644 docs/academy/py/10_set_up_python.mdx delete mode 100644 docs/academy/py/_category_.json delete mode 100644 docs/academy/py/_snippets/10_setup_python.py delete mode 100644 docs/academy/py/_snippets/cta_socials.mdx delete mode 100644 docs/academy/py/_snippets/intro_next_steps.mdx delete mode 100644 docs/academy/py/compression/100_pq.mdx delete mode 100644 docs/academy/py/compression/200_bq.mdx delete mode 100644 docs/academy/py/compression/300_strategy.mdx delete mode 100644 docs/academy/py/compression/900_next_steps.mdx delete mode 100644 docs/academy/py/compression/_snippets/100_pq.py delete mode 100644 docs/academy/py/compression/_snippets/200_bq.py delete mode 100644 docs/academy/py/compression/_snippets/pq_diagram.png delete mode 100644 docs/academy/py/compression/index.md delete mode 100644 docs/academy/py/img/Weaviate-release-1-22-python.png delete mode 100644 docs/academy/py/multitenancy/100_overview.mdx delete mode 100644 docs/academy/py/multitenancy/200_setup.mdx delete mode 100644 docs/academy/py/multitenancy/300_tenant_data.mdx delete mode 100644 docs/academy/py/multitenancy/400_manage_tenants.mdx delete mode 100644 docs/academy/py/multitenancy/900_next_steps.mdx delete mode 100644 docs/academy/py/multitenancy/_snippets/100_config.py delete mode 100644 docs/academy/py/multitenancy/img/multi-tenancy-dark.png delete mode 100644 docs/academy/py/multitenancy/img/multi-tenancy-light.png delete mode 100644 docs/academy/py/multitenancy/index.md delete mode 100644 docs/academy/py/named_vectors/101_nv_preparation/index.mdx delete mode 100644 docs/academy/py/named_vectors/102_nv_collections/20_create_collection.mdx delete mode 100644 docs/academy/py/named_vectors/102_nv_collections/30_import_data.mdx delete mode 100644 docs/academy/py/named_vectors/102_nv_collections/index.mdx delete mode 100644 docs/academy/py/named_vectors/103_nv_queries/10_searches.mdx delete mode 100644 docs/academy/py/named_vectors/103_nv_queries/20_use_cases.mdx delete mode 100644 docs/academy/py/named_vectors/103_nv_queries/index.mdx delete mode 100644 docs/academy/py/named_vectors/900_next_steps.mdx delete mode 100644 docs/academy/py/named_vectors/_snippets/101_connect.py delete mode 100644 docs/academy/py/named_vectors/_snippets/102_collection.py delete mode 100644 docs/academy/py/named_vectors/_snippets/103_searches.py delete mode 100644 docs/academy/py/named_vectors/_snippets/104_usecase.py delete mode 100644 docs/academy/py/named_vectors/index.md delete mode 100644 docs/academy/py/standalone/_202_vectorizer_selection/10_vectorization_in_weaviate.mdx delete mode 100644 docs/academy/py/standalone/_202_vectorizer_selection/20_requirements.mdx delete mode 100644 docs/academy/py/standalone/_202_vectorizer_selection/30_performance.mdx delete mode 100644 docs/academy/py/standalone/_202_vectorizer_selection/40_compression.mdx delete mode 100644 docs/academy/py/standalone/_202_vectorizer_selection/50_use_in_weaviate.mdx delete mode 100644 docs/academy/py/standalone/_202_vectorizer_selection/index.mdx delete mode 100644 docs/academy/py/standalone/_203_indexing/_60_indexing_options.mdx delete mode 100644 docs/academy/py/standalone/_203_indexing/index.mdx delete mode 100644 docs/academy/py/standalone/_others/_inside_weaviate.mdx delete mode 100644 docs/academy/py/standalone/_others/_vectorizer_intro.md delete mode 100644 docs/academy/py/standalone/chunking/10_introduction.mdx delete mode 100644 docs/academy/py/standalone/chunking/20_how_1.mdx delete mode 100644 docs/academy/py/standalone/chunking/25_how_2.mdx delete mode 100644 docs/academy/py/standalone/chunking/30_example_chunking.mdx delete mode 100644 docs/academy/py/standalone/chunking/40_example_search.mdx delete mode 100644 docs/academy/py/standalone/chunking/50_considerations.mdx delete mode 100644 docs/academy/py/standalone/chunking/90_wrap_up.mdx delete mode 100644 docs/academy/py/standalone/chunking/_snippets/20_chunking_methods.1.fixed.size.py delete mode 100644 docs/academy/py/standalone/chunking/_snippets/20_chunking_methods.2.variable.size.py delete mode 100644 docs/academy/py/standalone/chunking/_snippets/20_chunking_methods.3.mixed.strategy.py delete mode 100644 docs/academy/py/standalone/chunking/_snippets/30_example.py delete mode 100644 docs/academy/py/standalone/chunking/_snippets/what-is-git.asc delete mode 100644 docs/academy/py/standalone/chunking/index.mdx delete mode 100644 docs/academy/py/standalone/index.md delete mode 100644 docs/academy/py/standalone/which_search/05_review.mdx delete mode 100644 docs/academy/py/standalone/which_search/10_strengths.mdx delete mode 100644 docs/academy/py/standalone/which_search/20_selection.mdx delete mode 100644 docs/academy/py/standalone/which_search/30_strategies.mdx delete mode 100644 docs/academy/py/standalone/which_search/_30_improve_search.mdx delete mode 100644 docs/academy/py/standalone/which_search/_img/multimodal_example.png delete mode 100644 docs/academy/py/standalone/which_search/_snippets/05_review.py delete mode 100644 docs/academy/py/standalone/which_search/_snippets/10_strengths.py delete mode 100644 docs/academy/py/standalone/which_search/_snippets/20_selection.py delete mode 100644 docs/academy/py/standalone/which_search/_snippets/30_strategies.py delete mode 100644 docs/academy/py/standalone/which_search/index.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/101_setup_weaviate/10_client.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/101_setup_weaviate/20_create_instance/10_create_wcs.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/101_setup_weaviate/20_create_instance/20_create_docker.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/101_setup_weaviate/20_create_instance/index.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/101_setup_weaviate/30_communicate.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/101_setup_weaviate/index.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/102_object_collections/10_preparation.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/102_object_collections/20_create_collection.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/102_object_collections/25_generate_vectors.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/102_object_collections/30_import_data.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/102_object_collections/index.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/103_object_searches/10_vector.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/103_object_searches/20_keyword_hybrid.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/103_object_searches/30_filters.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/103_object_searches/index.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/104_object_rag/10_setup.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/104_object_rag/20_single_prompt.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/104_object_rag/30_grouped_task.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/104_object_rag/index.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/900_next_steps.mdx delete mode 100644 docs/academy/py/starter_custom_vectors/_snippets/101_connect.py delete mode 100644 docs/academy/py/starter_custom_vectors/_snippets/102_collection.py delete mode 100644 docs/academy/py/starter_custom_vectors/_snippets/103_10_vector.py delete mode 100644 docs/academy/py/starter_custom_vectors/_snippets/103_20_searches.py delete mode 100644 docs/academy/py/starter_custom_vectors/_snippets/104_rag.py delete mode 100644 docs/academy/py/starter_custom_vectors/index.md delete mode 100644 docs/academy/py/starter_multimodal_data/101_setup_weaviate/10_client.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/101_setup_weaviate/20_create_docker.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/101_setup_weaviate/30_communicate.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/101_setup_weaviate/index.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/102_mm_collections/10_preparation.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/102_mm_collections/20_create_collection.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/102_mm_collections/30_import_data.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/102_mm_collections/index.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/103_mm_searches/10_multimodal.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/103_mm_searches/20_keyword_hybrid.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/103_mm_searches/30_filters.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/103_mm_searches/index.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/104_mm_rag/10_setup.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/104_mm_rag/20_single_prompt.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/104_mm_rag/30_grouped_task.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/104_mm_rag/index.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/900_next_steps.mdx delete mode 100644 docs/academy/py/starter_multimodal_data/_snippets/101_connect.py delete mode 100644 docs/academy/py/starter_multimodal_data/_snippets/102_collection.py delete mode 100644 docs/academy/py/starter_multimodal_data/_snippets/103_searches.py delete mode 100644 docs/academy/py/starter_multimodal_data/_snippets/104_rag.py delete mode 100644 docs/academy/py/starter_multimodal_data/index.md delete mode 100644 docs/academy/py/starter_text_data/101_setup_weaviate/10_client.mdx delete mode 100644 docs/academy/py/starter_text_data/101_setup_weaviate/20_create_instance/10_create_wcs.mdx delete mode 100644 docs/academy/py/starter_text_data/101_setup_weaviate/20_create_instance/20_create_docker.mdx delete mode 100644 docs/academy/py/starter_text_data/101_setup_weaviate/20_create_instance/index.mdx delete mode 100644 docs/academy/py/starter_text_data/101_setup_weaviate/30_communicate.mdx delete mode 100644 docs/academy/py/starter_text_data/101_setup_weaviate/index.mdx delete mode 100644 docs/academy/py/starter_text_data/102_text_collections/10_preparation.mdx delete mode 100644 docs/academy/py/starter_text_data/102_text_collections/20_create_collection.mdx delete mode 100644 docs/academy/py/starter_text_data/102_text_collections/30_import_data.mdx delete mode 100644 docs/academy/py/starter_text_data/102_text_collections/index.mdx delete mode 100644 docs/academy/py/starter_text_data/103_text_searches/10_semantic.mdx delete mode 100644 docs/academy/py/starter_text_data/103_text_searches/20_keyword_hybrid.mdx delete mode 100644 docs/academy/py/starter_text_data/103_text_searches/30_filters.mdx delete mode 100644 docs/academy/py/starter_text_data/103_text_searches/index.mdx delete mode 100644 docs/academy/py/starter_text_data/104_text_rag/10_setup.mdx delete mode 100644 docs/academy/py/starter_text_data/104_text_rag/20_single_prompt.mdx delete mode 100644 docs/academy/py/starter_text_data/104_text_rag/30_grouped_task.mdx delete mode 100644 docs/academy/py/starter_text_data/104_text_rag/index.mdx delete mode 100644 docs/academy/py/starter_text_data/900_next_steps.mdx delete mode 100644 docs/academy/py/starter_text_data/_snippets/101_connect.py delete mode 100644 docs/academy/py/starter_text_data/_snippets/102_collection.py delete mode 100644 docs/academy/py/starter_text_data/_snippets/103_searches.py delete mode 100644 docs/academy/py/starter_text_data/_snippets/104_rag.py delete mode 100644 docs/academy/py/starter_text_data/index.md delete mode 100644 docs/academy/py/tmp_images/academy_placeholder.jpg delete mode 100644 docs/academy/py/tokenization/100_basics.mdx delete mode 100644 docs/academy/py/tokenization/200_options.mdx delete mode 100644 docs/academy/py/tokenization/300_filters.mdx delete mode 100644 docs/academy/py/tokenization/400_searches.mdx delete mode 100644 docs/academy/py/tokenization/900_next_steps.mdx delete mode 100644 docs/academy/py/tokenization/_snippets/310_create_collection.py delete mode 100644 docs/academy/py/tokenization/_snippets/315_add_objects.py delete mode 100644 docs/academy/py/tokenization/_snippets/320_filters.py delete mode 100644 docs/academy/py/tokenization/_snippets/400_searches.py delete mode 100644 docs/academy/py/tokenization/index.md delete mode 100644 docs/academy/py/vector_index/100_overview.mdx delete mode 100644 docs/academy/py/vector_index/200_hnsw.mdx delete mode 100644 docs/academy/py/vector_index/220_flat.mdx delete mode 100644 docs/academy/py/vector_index/250_dynamic.mdx delete mode 100644 docs/academy/py/vector_index/900_next_steps.mdx delete mode 100644 docs/academy/py/vector_index/_snippets/100_config.py delete mode 100644 docs/academy/py/vector_index/_snippets/ef.png delete mode 100644 docs/academy/py/vector_index/_snippets/efConstruction.png delete mode 100644 docs/academy/py/vector_index/_snippets/hnsw_diagram.png delete mode 100644 docs/academy/py/vector_index/_snippets/maxConnections.png delete mode 100644 docs/academy/py/vector_index/img/vector_distance.png delete mode 100644 docs/academy/py/vector_index/index.md delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/10_intro_weaviate.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/15_overview_vectors.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/20_examples_1.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/25_examples_2.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/40_set_up.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/50_hands_on.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/90_wrap_up.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/_snippets/academy.clients.graphql.get.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/_snippets/academy.clients.rest.object.get.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/_snippets/academy.hello.check.connection.edudemo.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/_snippets/academy.hello.check.connection.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/_snippets/academy.hello.client.instantiation.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/_snippets/academy.hello.query.generative.search.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/_snippets/academy.hello.query.question.answering.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/_snippets/academy.hello.query.vector.search.mdx delete mode 100644 docs/academy/py/zero_to_mvp/101_hello_weaviate/index.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/10_get.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/20_vector_parameters.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/40_aggregate.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/50_filters.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/80_inside_queries_1.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/90_wrap_up.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/10_get.py delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.aggregate.groupby.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.aggregate.standalone.2.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.aggregate.standalone.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.aggregate.syntax.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.aggregate.with.neartext.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.filter.multiple.operands.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.filter.pagination.nearText.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.filter.pagination.related.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.filter.where.greater.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.filter.where.like.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.get.standalone.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.get.syntax.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.get.with.additional.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.nearObject.simple.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.nearText.simple.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.nearVector.simple.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.nearVector.simple.vector.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.nearobject.equivalent.nearvector.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.nearobject.example.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.neartext.equivalent.nearvector.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.neartext.example.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/academy.queries.schema.short.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/meerkats.vector.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/_snippets/popular.90s.comedy.vector.mdx delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/images/search-conceptual-dark.png delete mode 100644 docs/academy/py/zero_to_mvp/102_queries_1/index.mdx delete mode 100644 docs/academy/py/zero_to_mvp/103_schema_and_imports/05_preparation.mdx delete mode 100644 docs/academy/py/zero_to_mvp/103_schema_and_imports/10_data_structure.mdx delete mode 100644 docs/academy/py/zero_to_mvp/103_schema_and_imports/20_schema.mdx delete mode 100644 docs/academy/py/zero_to_mvp/103_schema_and_imports/30_import.mdx delete mode 100644 docs/academy/py/zero_to_mvp/103_schema_and_imports/40_example.mdx delete mode 100644 docs/academy/py/zero_to_mvp/103_schema_and_imports/90_wrap_up.mdx delete mode 100644 docs/academy/py/zero_to_mvp/103_schema_and_imports/_snippets/05_create_instance.py delete mode 100644 docs/academy/py/zero_to_mvp/103_schema_and_imports/_snippets/20_schema.py delete mode 100644 docs/academy/py/zero_to_mvp/103_schema_and_imports/_snippets/30_import.py delete mode 100644 docs/academy/py/zero_to_mvp/103_schema_and_imports/_snippets/40_import_example_1.py delete mode 100644 docs/academy/py/zero_to_mvp/103_schema_and_imports/images/academy_103_import_process_conceptual.png delete mode 100644 docs/academy/py/zero_to_mvp/103_schema_and_imports/images/academy_103_import_process_conceptual_simple.png delete mode 100644 docs/academy/py/zero_to_mvp/103_schema_and_imports/index.mdx delete mode 100644 docs/academy/py/zero_to_mvp/104_queries_2/10_bm25.mdx delete mode 100644 docs/academy/py/zero_to_mvp/104_queries_2/20_hybrid.mdx delete mode 100644 docs/academy/py/zero_to_mvp/104_queries_2/30_generative.mdx delete mode 100644 docs/academy/py/zero_to_mvp/104_queries_2/90_wrap_up.mdx delete mode 100644 docs/academy/py/zero_to_mvp/104_queries_2/_40_qna.mdx delete mode 100644 docs/academy/py/zero_to_mvp/104_queries_2/_snippets/10_bm25.py delete mode 100644 docs/academy/py/zero_to_mvp/104_queries_2/_snippets/20_hybrid.py delete mode 100644 docs/academy/py/zero_to_mvp/104_queries_2/_snippets/30_generative.py delete mode 100644 docs/academy/py/zero_to_mvp/104_queries_2/_snippets/40_qna.py delete mode 100644 docs/academy/py/zero_to_mvp/104_queries_2/index.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_000_template/_TEMPLATE_10_body.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_000_template/_TEMPLATE_90_wrap_up.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_000_template/_TEMPLATE_index.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_104_vectorization_essentials/50_cross_references.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_104_vectorization_essentials/70_import_example_2.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_104_vectorization_essentials/index.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_104_vectorization_essentials/intro_vectors.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_104_vectorization_essentials/vector_parameters.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_104_vectorization_essentials/vector_search.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_106_data_import/index.md delete mode 100644 docs/academy/py/zero_to_mvp/_107_crud_operations/index.md delete mode 100644 docs/academy/py/zero_to_mvp/_108_modules/index.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_109_tmp_leftovers/102_arguments.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_109_tmp_leftovers/_graphql.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_109_tmp_leftovers/_leftovers.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_109_tmp_leftovers/tmp.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_999_vectorizer_selection_1/combining_models.md delete mode 100644 docs/academy/py/zero_to_mvp/_999_vectorizer_selection_1/common_model_types.md delete mode 100644 docs/academy/py/zero_to_mvp/_999_vectorizer_selection_1/index.mdx delete mode 100644 docs/academy/py/zero_to_mvp/_snippets/deprecation.md delete mode 100644 docs/academy/py/zero_to_mvp/_snippets/setup.py delete mode 100644 docs/academy/py/zero_to_mvp/index.md delete mode 100644 docs/academy/py/zero_to_mvp/setup.mdx delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/10_introduction.mdx delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/20_inside_ai_models.mdx delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/30_generative_models.mdx delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/40_embedding_models.mdx delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/50_model_training.mdx delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/60_using_models.mdx delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/70_strategy.mdx delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/10_chat_example_1.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/10_chat_example_2.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/10_copilot_example.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/10_cute_dog.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/10_generated_unicorn.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/model_cards.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_01_basic.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_01_basic_dark.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_05_basic_labelling.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_05_basic_labelling_dark.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_10_inputs_and_outputs.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_10_inputs_and_outputs_dark.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_20_node_calculation.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_20_node_calculation_dark.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_25_total_parameters.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_25_total_parameters_dark.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_30_final_output.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_30_final_output_dark.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_40_generative_models.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_40_generative_models_dark.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_45_auto_regressive.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_45_auto_regressive_dark.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_50_embedding_models.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_50_embedding_models_dark.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_55_backprop.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_55_backprop_dark.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_80_inference.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/nn_explained_80_inference_dark.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/_img/tokenization.png delete mode 100644 docs/academy/theory/010_ai_models_deep_dive/index.mdx delete mode 100644 docs/academy/theory/101_hello_weaviate/10_intro_weaviate.mdx delete mode 100644 docs/academy/theory/101_hello_weaviate/15_overview_vectors.mdx delete mode 100644 docs/academy/theory/101_hello_weaviate/20_examples_1.mdx delete mode 100644 docs/academy/theory/101_hello_weaviate/25_examples_2.mdx delete mode 100644 docs/academy/theory/101_hello_weaviate/90_next_steps.mdx delete mode 100644 docs/academy/theory/101_hello_weaviate/index.mdx delete mode 100644 docs/academy/theory/150_search_types/_index.md delete mode 100644 docs/academy/theory/150_search_types/_notes.md delete mode 100644 docs/academy/theory/180_embedding_model_selection/10_introduction.mdx delete mode 100644 docs/academy/theory/180_embedding_model_selection/20_workflow_selection.mdx delete mode 100644 docs/academy/theory/180_embedding_model_selection/22_identify_needs.mdx delete mode 100644 docs/academy/theory/180_embedding_model_selection/24_initial_screening.mdx delete mode 100644 docs/academy/theory/180_embedding_model_selection/26_detailed_eval.mdx delete mode 100644 docs/academy/theory/180_embedding_model_selection/28_benchmark_example.mdx delete mode 100644 docs/academy/theory/180_embedding_model_selection/40_periodic_re_evaluation.mdx delete mode 100644 docs/academy/theory/180_embedding_model_selection/_img/candidate_documents.png delete mode 100644 docs/academy/theory/180_embedding_model_selection/_img/embedding_eval_example_1_fasttext.png delete mode 100644 docs/academy/theory/180_embedding_model_selection/_img/embedding_eval_example_2_arctic2.png delete mode 100644 docs/academy/theory/180_embedding_model_selection/_img/embedding_model_evaluation.png delete mode 100644 docs/academy/theory/180_embedding_model_selection/_img/embedding_model_selection_workflow.png delete mode 100644 docs/academy/theory/180_embedding_model_selection/_img/embedding_model_selection_workflow_dark.png delete mode 100644 docs/academy/theory/180_embedding_model_selection/_img/identify_needs_overview.png delete mode 100644 docs/academy/theory/180_embedding_model_selection/_img/memory-reqs-1m-docs.png delete mode 100644 docs/academy/theory/180_embedding_model_selection/_img/mieb_by_any_to_any.png delete mode 100644 docs/academy/theory/180_embedding_model_selection/_img/model_cards.png delete mode 100644 docs/academy/theory/180_embedding_model_selection/_img/mteb-benchmarks-by-task-general.png delete mode 100644 docs/academy/theory/180_embedding_model_selection/_img/mteb-benchmarks-by-task-specialized.png delete mode 100644 docs/academy/theory/180_embedding_model_selection/_img/mteb-tasks-example.png delete mode 100644 docs/academy/theory/180_embedding_model_selection/_img/mteb_by_retrieval.png delete mode 100644 docs/academy/theory/180_embedding_model_selection/index.mdx delete mode 100644 docs/academy/theory/_category_.json delete mode 100644 src/components/Academy/academy.css delete mode 100644 src/components/Academy/card.jsx delete mode 100644 src/components/Academy/courseData.js delete mode 100644 src/components/Academy/courseUnits.jsx delete mode 100644 src/components/Academy/coursecards.jsx delete mode 100644 src/components/Academy/courses.jsx delete mode 100644 src/components/Academy/learningGoals.jsx delete mode 100644 src/components/Academy/learningGoalsExp.mdx delete mode 100644 src/components/Academy/quiz.js delete mode 100644 src/components/Academy/unitData.js delete mode 100644 src/components/Academy/unitcards.jsx delete mode 100644 src/components/Academy/units.jsx delete mode 100644 src/components/scriptSwitch/index.jsx delete mode 100644 tests/test_academy.py diff --git a/.vscode/markdown.code-snippets b/.vscode/markdown.code-snippets index 95c36f9a2..c5fa3dd3a 100644 --- a/.vscode/markdown.code-snippets +++ b/.vscode/markdown.code-snippets @@ -143,94 +143,6 @@ "description": "Adds the tabs section for code examples" }, - "Quiz variable": { - "prefix": "docusaurus-academy-quiz-def", - "scope": "markdown", - "body": [ - "", - "", - "import Quiz from '/src/components/Academy/quiz.js'", - "const ${varName} = [{", - " questionText: '${questionText}',", - " answerOptions: [", - " {", - " answerText: '${answerOne}',", - " isCorrect: false,", - " feedback: '${feedbackOne}',", - " },", - " {", - " answerText: '${answerTwo}',", - " isCorrect: false,", - " feedback: '${feedbackTwo}',", - " },", - " {", - " answerText: '${answerThree}',", - " isCorrect: false,", - " feedback: '${feedbackThree}',", - " },", - " ]", - "}];" - ] - }, - "Academy-Top-lvl-head": { - "prefix": "docusaurus-academy-heading", - "scope": "markdown", - "body": [ - "##   Top level head" - ] - }, - "Academy-Theory-subheading": { - "prefix": "docusaurus-academy-theory-subheading", - "scope": "markdown", - "body": [ - "###   Theory subhead" - ] - }, - "Academy-Practical-subheading": { - "prefix": "docusaurus-academy-practical-subheading", - "scope": "markdown", - "body": [ - "###   Practical subhead" - ] - }, - "Academy-exercise-admonition": { - "prefix": "docusaurus-academy-exercise-admonition", - "scope": "markdown", - "body": [ - ":::note Exercise", - "Try out the above query again, with these changes.", - "- xxx", - "- xxx", - ":::" - ] - }, - "Academy-Python-GQL-code": { - "prefix": "docusaurus-academy-python-tabs-code", - "scope": "markdown", - "body": [ - "import Tabs from '@theme/Tabs';", - "import TabItem from '@theme/TabItem';", - "", - "", - "", - "", - "```python", - "", - "```", - "", - "", - "", - "", - "```graphql", - "", - "```", - "", - "", - "" - ], - "description": "Adds the tabs section for Academy python/graphql code examples" - }, - "Related-Pages": { "prefix": "docusaurus-admonition-related-pages-info", "scope": "markdown", diff --git a/docs/academy/_customization/index.md b/docs/academy/_customization/index.md deleted file mode 100644 index 5d870fa4c..000000000 --- a/docs/academy/_customization/index.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: 2. Customizing Weaviate -sidebar_position: 200 ---- - -import LearningGoals from '/src/components/Academy/learningGoals.jsx'; -import CourseUnits from '/src/components/Academy/courseUnits.jsx'; -import { courseData } from '/src/components/Academy/courseData.js' - -## Course overview - -TBC - -## Learning objectives - - - -## Units - - \ No newline at end of file diff --git a/docs/academy/_snippets/academy.clients.graphql.raw.mdx b/docs/academy/_snippets/academy.clients.graphql.raw.mdx deleted file mode 100644 index bc6df5a93..000000000 --- a/docs/academy/_snippets/academy.clients.graphql.raw.mdx +++ /dev/null @@ -1,50 +0,0 @@ -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - - - - -```python -import weaviate - -client = weaviate.Client("https://WEAVIATE_INSTANCE_URL") # Replace WEAVIATE_INSTANCE_URL with your instance URL - -query = ''' -{ - Get { - WikiArticle { - title - wiki_summary - } - } -} -''' - -result = client.query.raw(query) - -print(result) -``` - - - - -```js -Coming soon -``` - - - - -```go -TBC -``` - - - - -```java -TBC -``` - - - diff --git a/docs/academy/_snippets/example_schema.mdx b/docs/academy/_snippets/example_schema.mdx deleted file mode 100644 index 26dd0f880..000000000 --- a/docs/academy/_snippets/example_schema.mdx +++ /dev/null @@ -1,83 +0,0 @@ -
- - Example schema - -
- -```json -{ - "classes": [ - { - "class": "Category", - "description": "A Jeopardy! category", - ... - "properties": [ - { - "dataType": [ - "text" - ], - "description": "The title of the category", - "name": "title", - "tokenization": "word" - } - ], - ... - "vectorizer": "text2vec-openai" - }, - { - "class": "Question", - ... - "properties": [ - { - "dataType": [ - "text" - ], - "description": "Question asked to the contestant", - ... - "name": "question", - "tokenization": "word" - }, - { - "dataType": [ - "text" - ], - "description": "Answer provided by the contestant", - ... - "name": "answer", - "tokenization": "word" - }, - { - "dataType": [ - "int" - ], - "description": "Points that the question was worth", - ... - "name": "points" - }, - { - "dataType": [ - "text" - ], - "description": "Jeopardy round", - ... - "name": "round" - }, - { - "dataType": [ - "Category" - ], - "description": "The category of the question", - ... - "name": "hasCategory" - } - ... - ], - ... - "vectorizer": "text2vec-openai" - } - ] -} -``` - -
-
\ No newline at end of file diff --git a/docs/academy/_snippets/preview.mdx b/docs/academy/_snippets/preview.mdx deleted file mode 100644 index f7dcdb5bc..000000000 --- a/docs/academy/_snippets/preview.mdx +++ /dev/null @@ -1,5 +0,0 @@ -:::note Preview unit -This is a preview version of this unit. -So some sections are not yet complete - such as videos and quiz questions. -Please check back later for the full version, and in the meantime, feel free to provide any feedback through the comments below. -::: \ No newline at end of file diff --git a/docs/academy/deployment/_category_.json b/docs/academy/deployment/_category_.json deleted file mode 100644 index ae3b74b9a..000000000 --- a/docs/academy/deployment/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Deployment", - "position": 50 -} \ No newline at end of file diff --git a/docs/academy/deployment/k8s/10_kubernetes_basics.mdx b/docs/academy/deployment/k8s/10_kubernetes_basics.mdx deleted file mode 100644 index 4fd96a922..000000000 --- a/docs/academy/deployment/k8s/10_kubernetes_basics.mdx +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: Create a Kubernetes cluster ---- - -**Kubernetes** is an open-source *container orchestration* platform. It means that you can use Kubernetes to deploy, scale, and manage [containerized](https://www.docker.com/resources/what-container/) applications. - -In production, Kubernetes is used to manage a cluster of nodes, such as those located on cloud providers like AWS, Google Cloud, or Azure, or on your own on-premises infrastructure. - -Here, you learn how to do this using **Minikube**, a handy tool that allows you to run a Kubernetes cluster on your local machine for development and testing purposes. - -:::info What if I have a production Kubernetes cluster? -If you are looking to deploy Weaviate on a production Kubernetes cluster, the steps are similar. You will just need to replace Minikube with your production Kubernetes cluster. - -As there are many variations in Kubernetes deployments, we recommend you follow the deployment instructions provided by your cloud provider or Kubernetes distribution for this purpose. -::: - -## Prerequisites - -For this tutorial, you will need the following tools: - -- **Minikube**: a tool that runs a Kubernetes cluster on your local machine. It is used to test Kubernetes deployments locally. -- **kubectl**: the Kubernetes command-line tool. It is used to interact with the Kubernetes cluster. -- **Docker**: a platform that allows you to develop, ship, and run applications in containers. We install Docker as the Minikube [*driver*](https://minikube.sigs.k8s.io/docs/drivers/) to virtualize the Kubernetes cluster on your local machine. Your Minikube may use a different driver, but Docker is the most common one. -- **Helm**: a package manager for Kubernetes. It is used to install and manage applications on Kubernetes. - -### Installation - -If you don't have any of these tools installed, you can follow the installation instructions for each, by following the links below: - -- [Minikube](https://minikube.sigs.k8s.io/docs/start/) -- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) -- [Docker](https://docs.docker.com/get-docker/) -- [helm](https://helm.sh/docs/intro/install/) - -Once you've done so, confirm installation by running the following commands: - -```bash -minikube version -kubectl version --client -docker --version -helm version -``` - -You should see an output like: - -```bash -minikube version: v1.32.0 -commit: 8220a6eb95f0a4d75f7f2d7b14cef975f050512d -Client Version: v1.28.2 -Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3 -Docker version 24.0.7, build afdd53b -version.BuildInfo{Version:"v3.12.2", GitCommit:"1e210a2c8cc5117d1055bfaa5d40f51bbc2e345e", GitTreeState:"clean", GoVersion:"go1.20.6"} -``` - -If you see similar output, you are ready to proceed. - -Note that the versions may differ from the ones shown above. Please make sure you have the latest versions installed. - -## Run Minikube - -You are now ready to start Minikube. Run the following command: - -```bash -minikube start -``` - -Then, you might see an output like this: - -```bash -😄 minikube v1.32.0 on Darwin 14.4.1 (arm64) -✨ Automatically selected the docker driver. Other choices: vmware, ssh -📌 Using Docker Desktop driver with root privileges -👍 Starting control plane node minikube in cluster minikube -🚜 Pulling base image ... -💾 Downloading Kubernetes v1.28.3 preload ... - > preloaded-images-k8s-v18-v1...: 341.16 MiB / 341.16 MiB 100.00% 42.00 M - > gcr.io/k8s-minikube/kicbase...: 410.56 MiB / 410.58 MiB 100.00% 42.28 M -🔥 Creating docker container (CPUs=2, Memory=8100MB) ... -🐳 Preparing Kubernetes v1.28.3 on Docker 24.0.7 ... - ▪ Generating certificates and keys ... - ▪ Booting up control plane ... - ▪ Configuring RBAC rules ... -🔗 Configuring bridge CNI (Container Networking Interface) ... -🔎 Verifying Kubernetes components... - ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5 -🌟 Enabled addons: storage-provisioner, default-storageclass -🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default -``` - -Great! You have started a Kubernetes cluster using Minikube. Note the last comment that says `kubectl is now configured to use "minikube" cluster and "default" namespace by default`. So, you can now use `kubectl` to interact with the Kubernetes cluster. - -### Verify the cluster - -If you run the following command: - -```bash -kubectl get pods -A -``` - -This will show you the pods running in the cluster. You should see something like this: - -```bash -NAMESPACE NAME READY STATUS RESTARTS AGE -kube-system coredns-5dd5756b68-qhfch 1/1 Running 0 26s -kube-system etcd-minikube 1/1 Running 0 42s -kube-system kube-apiserver-minikube 1/1 Running 0 40s -kube-system kube-controller-manager-minikube 1/1 Running 0 42s -kube-system kube-proxy-xwdgf 1/1 Running 0 26s -kube-system kube-scheduler-minikube 1/1 Running 0 40s -kube-system storage-provisioner 1/1 Running 0 39s -``` - -If your output is similar to the one above, then congratulations! You have successfully spun up a Kubernetes cluster on your local machine using Minikube. - -Next, you will learn how to deploy Weaviate to the Kubernetes cluster using Helm. - - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - - diff --git a/docs/academy/deployment/k8s/30_setup_weaviate.mdx b/docs/academy/deployment/k8s/30_setup_weaviate.mdx deleted file mode 100644 index 08ff99b89..000000000 --- a/docs/academy/deployment/k8s/30_setup_weaviate.mdx +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Run Weaviate on Kubernetes ---- - -Now that you have a Kubernetes cluster, you can deploy Weaviate on it. This section will show you how to deploy Weaviate on Kubernetes using Helm. - -## Helm chart - -As mentioned earlier, **Helm** is a package manager for Kubernetes. It uses a packaging format called **charts**. - -A **Helm chart** is a collection of files that describe a set of Kubernetes resources. It is the equivalent of a **package** in other package managers, such as pip or npm. - -Weaviate provides a [Helm chart](https://github.com/weaviate/weaviate-helm) that you can use to deploy Weaviate on Kubernetes. So, we will use this Helm chart to deploy Weaviate on your Kubernetes cluster. - -## Deployment - -First, add the [Weaviate Helm repository](https://weaviate.github.io/weaviate-helm) to your Helm installation. This will make the Weaviate Helm chart available to you. - -```bash -helm repo add weaviate https://weaviate.github.io/weaviate-helm -``` - -:::tip Tip: Update the Helm repositories - -If you have previously added the `weaviate` Helm repository, run this to update it to the latest version. - -```bash -helm repo update weaviate -``` - -You should periodically [update the Helm repositories](https://helm.sh/docs/helm/helm_repo_update/) to ensure that you have the latest information about available charts. - -::: - -Next, generate a configuration file (`values.yaml`) for the Weaviate Helm chart. - -```bash -helm show values weaviate/weaviate > values.yaml -``` - -This command fetches the default values for the Weaviate Helm chart and saves them to a file named `values.yaml`. You can now edit this file to customize the deployment configuration. - -There are many settings you can configure here. It may be beneficial to explore them in the `values.yaml` file, and review the relevant settings through the in-line comments, or in the [official Weaviate documentation](/weaviate/index.mdx) if you are curious. - -For now, let's configure a couple of important settings, before deploying Weaviate. - -## Configuration - -Before we go further, let's update the configuration file to: - -- Enable the gRPC service -- Enable Cohere integrations - -Open the `values.yaml` file in a text editor, and update the following sections: - -#### Enable the gRPC service - -:::info Default settings -From helm chart version `17.0.0`, the gRPC service is enabled by default. If using older versions, you must enable it to use gRPC. -::: - -Check that the service's `enabled` field is set to `true` and the `type` field is set to `LoadBalancer`. This will expose the gRPC service, which will allow you to access it from outside the Kubernetes cluster so you can make of the [gRPC API](https://weaviate.io/blog/grpc-performance-improvements). - -```yaml -grpcService: - enabled: true # ⬅️ Make sure this is set to true - name: weaviate-grpc - ports: - - name: grpc - protocol: TCP - port: 50051 - type: LoadBalancer # ⬅️ Set this to LoadBalancer (from NodePort) for this example -``` - -#### Enable Cohere integrations - -```yaml - text2vec-cohere: - - enabled: true # ⬅️ Make sure this is set to true - - # ... settings not shown ... - generative-cohere: - - enabled: true # ⬅️ Make sure this is set to true -``` - -Save the file after making these changes. You are now ready to deploy Weaviate on your Kubernetes cluster. - -## Run Weaviate - -Make sure your Kubernetes cluster is up and running (e.g. with `minikube start`), and you have configured `kubectl` to access it. - -Let's first create a namespace for Weaviate: - -```bash -kubectl create namespace weaviate -``` - -This will let us deploy Weaviate in a [separate namespace](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#when-to-use-multiple-namespaces). This is not mandatory, but we will do it here as it is good practice to allow better organization of resources. - -Then, run the following command: - -```bash -helm upgrade --install \ - "weaviate" \ - weaviate/weaviate \ - --namespace "weaviate" \ - --values ./values.yaml -``` - -This command will deploy Weaviate in the `weaviate` namespace of your Kubernetes cluster using the configuration specified in the `values.yaml` file. - -Now, if you run this: - -```bash -kubectl get pods -n weaviate -``` - -You should see the Weaviate pods running in the `weaviate` namespace. - -Note that it may take a little bit of time for the pods to start up. You can check the status of the pods by running the `kubectl get pods -n weaviate` command multiple times. - -```bash -❯ kubectl get pods -n weaviate -NAME READY STATUS RESTARTS AGE -weaviate-0 0/1 Pending 0 15s - -❯ kubectl get pods -n weaviate -NAME READY STATUS RESTARTS AGE -weaviate-0 1/1 Running 0 59s -``` - -Note how here, the `weaviate-0` pod went from `Pending` to `Running`. - -Congratulations! You have successfully deployed Weaviate on your local Kubernetes cluster. Next, let's confirm some basic interactions with Weaviate. - -:::tip Upgrading to `1.25` or higher - -To upgrade to `1.25` or higher from a pre-`1.25` version, you must delete the deployed `StatefulSet`, update the helm chart to version `17.0.0` or higher, and re-deploy Weaviate. - -See the [1.25 migration guide for Kubernetes](/deploy/migration/weaviate-1-25.md) for more details. -::: - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - - diff --git a/docs/academy/deployment/k8s/50_access_weaviate.mdx b/docs/academy/deployment/k8s/50_access_weaviate.mdx deleted file mode 100644 index f9bcb1797..000000000 --- a/docs/academy/deployment/k8s/50_access_weaviate.mdx +++ /dev/null @@ -1,178 +0,0 @@ ---- -title: Access & Configure Weaviate ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FilteredTextBlock from '@site/src/components/Documentation/FilteredTextBlock'; -import PyCode from '!!raw-loader!./_snippets/connect.py'; - -We have now spun up a Weaviate instance in our Kubernetes cluster. So what's next? In this section, we will look at how to access the Weaviate service, and how to configure it to suit your needs. - -## Access Weaviate - -Although our Weaviate service is happily running, it is not yet accessible from the outside world. This is because we have not exposed the service to the outside world. Let's do that now. - -### Expose the services - -Run the following command: - -```bash -minikube tunnel -``` - -You will recall that we configured the `weaviate` service as a `LoadBalancer` type in our Helm chart. So, when we run `minikube tunnel`, it will expose the service to the outside world - or at least, to our local machine. - -You will see a message like: - -```bash -✅ Tunnel successfully started - -📌 NOTE: Please do not close this terminal as this process must stay alive for the tunnel to be accessible ... - -❗ The service/ingress weaviate requires privileged ports to be exposed: [80] -🔑 sudo permission will be asked for it. -🏃 Starting tunnel for service weaviate. -🏃 Starting tunnel for service weaviate-grpc. -``` - -At this point you will be asked for your password. Enter it and the tunnel will be established. Note that closing the terminal or stopping the process will close the tunnel, making the services inaccessible again. - -:::info About `minikube tunnel` -[`minikube tunnel`](https://minikube.sigs.k8s.io/docs/handbook/accessing/#using-minikube-tunnel) creates a route between your local machine and the Minikube cluster. This allows services within your Minikube cluster that are exposed as LoadBalancer to be accessible on your local machine for development. - -We suggest you only run the tunnel command when you need to access the service from your local machine. When you are done, you can stop the tunnel by pressing `Ctrl+C`. -::: - -### Confirm access - -Now, if you run: - -```bash -kubectl get svc weaviate -n weaviate -``` - -You will see the external IP address of the service. For example: - -```bash -NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE -weaviate LoadBalancer 10.110.44.231 127.0.0.1 80:31230/TCP 61m -``` - -Navigate to `http://:80/v1` in your browser (typically `http://127.0.0.1:80/v1`). You should see the Weaviate REST root endpoint, with links to the various endpoints available in Weaviate. - -Now, you might also recall that we've opened up the gRPC service in our Kubernetes configuration. This service is available on port 50051. You can confirm this by running: - -```bash -kubectl get svc weaviate-grpc -n weaviate -``` - -Which will show: - -```bash -NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE -weaviate-grpc LoadBalancer 10.109.237.21 127.0.0.1 50051:32150/TCP 90m -``` - -
- - Another way to confirm access to the gRPC service - - -If you have netcat installed, you can also try: - -```bash -nc -zv 127.0.0.1 50051 -``` - -Which will show: - -```bash -Connection to 127.0.0.1 port 50051 [tcp/*] succeeded! -``` - -Note that not all systems have `nc` installed by default. It's okay if you don't have it - the `kubectl get svc` command output is sufficient to confirm access to the gRPC service. - -
- -### Connecting to your cluster - -Depending on your external IP address, you may need to use different strategies to connect to your cluster. - -If the external IP for both services is `127.0.0.1`, connect to Weaviate with: - - - -But the `weaviate` and `weaviate-grpc` services have different external IP addresses, you can connect to Weaviate with: - - - -Where parameters are `WEAVIATE_SVC_EXTERNAL_IP` and `GRPC_SVC_EXTERNAL_IP` are your external IP addresses for the `weaviate` and `weaviate-grpc` services respectively. - -## Configure Weaviate - -One of the best things about Kubernetes is that you can easily configure your services. Weaviate is no exception. You can configure Weaviate by updating the `values.yaml` file in the `weaviate` directory. - -For example, you can enable additional modules such as `text2vec-openai` and `generative-openai` modules by setting them to `true`: - -```yaml - text2vec-openai: - - enabled: true # ⬅️ Set to true - - # ... other settings not shown ... - - generative-openai: - - enabled: true # ⬅️ Set to true -``` - -Or we can set resource limits for the Weaviate pods. Let's set them to utilize 30-50% of a CPU, and 150-300Mi of memory: - -:::note Where to set resource limits -The `values.yaml` file contains multiple instances of `requests` and `limits` for different services, such as for local vectorization models. Make sure to set the `requests` and `limits` for the scale replicas of Weaviate towards the top of the file with no indentation. -::: - -```yaml -# Scale replicas of Weaviate. ... -requests: - cpu: '300m' - memory: '150Mi' -limits: - cpu: '500m' - memory: '300Mi' -``` - -To apply these changes, save the `values.yaml` file and run: - -```bash -helm upgrade --install \ - "weaviate" \ - weaviate/weaviate \ - --namespace "weaviate" \ - --values ./values.yaml -``` - -You will note that this is the same command we used to deploy Weaviate. This command will simply update the Weaviate deployment with the new configuration. - -There are a whole host of other configurations you can set in the `values.yaml` file, such as modifying authentication, authorization, backups, monitoring, resource allocation and so on. Please refer to the in-line documentation in the `values.yaml` file, and the Weaviate documentation for more information. - -Before we go, however, let's take a look at expanding our Weaviate deployment to include more nodes. This can help us to scale our Weaviate deployment to handle more traffic or growth, or to provide redundancy in case of node failure. - -We'll take a look at both in the next section. - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - - diff --git a/docs/academy/deployment/k8s/70_multi_node.mdx b/docs/academy/deployment/k8s/70_multi_node.mdx deleted file mode 100644 index 9c36088fb..000000000 --- a/docs/academy/deployment/k8s/70_multi_node.mdx +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: Multi-node setup ---- - -Recall that we have deployed Weaviate on a single node in our Kubernetes cluster with Minikube. Now, let's scale it up to a multi-node setup. - -To do this, we will need a Kubernetes cluster with multiple nodes. Then, we can configure Weaviate to make use of these nodes. - -## Add nodes to your Weaviate cluster - -We'll stop the current Weaviate deployment and then deploy a new one with [multiple nodes with Minikube](https://minikube.sigs.k8s.io/docs/tutorials/multi_node/). - -:::note Minikube limitations -Keep in mind that this runs multiple containers on the same host device for learning. In a production environment, you would typically have a managed Kubernetes cluster with multiple, isolated, physical or virtual nodes. -::: - -### Stop the current Weaviate deployment - -First, stop the tunnel by pressing `Ctrl+C` at the terminal where you ran `minikube tunnel`. - -Then, stop Minikube: - -```bash -minikube stop -``` - -Since the minikube cluster exists, we will have to delete it before we can start a new one with multiple nodes: - -:::note Alternatively... -You can also add nodes to an existing Minikube cluster. But we'll delete the current one and start a new one for simplicity. -::: - -```bash -minikube delete -``` - -### Start a multi-node Kubernetes cluster - -To start a multi-node Kubernetes cluster with Minikube, run: - -```bash -minikube start --nodes -``` - -Replace `` with the number of nodes you want in your cluster. In our case, let's spin up a 6-node cluster: - -```bash -minikube start --nodes 6 -``` - -Once that's finished, you can check the status of your nodes by running: - -```bash -kubectl get nodes -``` - -And you should see output like: - -```bash -NAME STATUS ROLES AGE VERSION -minikube Ready control-plane 78s v1.28.3 -minikube-m02 Ready 60s v1.28.3 -minikube-m03 Ready 50s v1.28.3 -minikube-m04 Ready 39s v1.28.3 -minikube-m05 Ready 29s v1.28.3 -minikube-m06 Ready 18s v1.28.3 -``` - -Now let's update the Weaviate deployment to use these nodes. To do this, we'll update the `replicas` field in the `values.yaml` file to match the number of nodes in the cluster. Along with our reduced resource requests and limits, this section should look as follows: - -```yaml -replicas: 6 -updateStrategy: - type: RollingUpdate -resources: {} -requests: - cpu: '300m' - memory: '150Mi' -limits: - cpu: '500m' - memory: '300Mi' -``` - -If we restart weaviate by running: - -```bash -helm upgrade --install \ - "weaviate" \ - weaviate/weaviate \ - --namespace "weaviate" \ - --values ./values.yaml -``` - -Then, you should see Weaviate pods come up on each of the nodes in your cluster. You can check this by running: - -```bash -kubectl get pods -n weaviate -``` - -And you should see output like: - -```bash -NAME READY STATUS RESTARTS AGE -weaviate-0 1/1 Running 0 31s -weaviate-1 0/1 PodInitializing 0 9s -``` - -As pods are created one by one. - -Eventually, you will see something like: - -```bash -NAME READY STATUS RESTARTS AGE -weaviate-0 1/1 Running 0 113s -weaviate-1 1/1 Running 0 91s -weaviate-2 1/1 Running 0 79s -weaviate-3 1/1 Running 0 57s -weaviate-4 1/1 Running 0 35s -weaviate-5 1/1 Running 0 13s -``` - -Open a new terminal and run `minikube tunnel` to expose the Weaviate service to your local machine as before. - -## Utilizing a multi-node setup - -There are two main ways to utilize a multi-node setup, namely **replication** and **horizontal scaling**. Let's take a look at each of these. - -### Replication - -Replication is the process of creating multiple copies of the same data across multiple nodes. - -This is useful for ensuring data availability and fault tolerance. In a multi-node setup, you can replicate your Weaviate data across multiple nodes to ensure that if one node fails, the data is still available on other nodes. A replicated setup can also help distribute the load across multiple nodes to improve performance, and allow zero-downtime upgrades and maintenance. - -Weaviate can handle replication by setting a replication factor in the database collection definition. This tells Weaviate how many copies of the data to keep across the nodes in the cluster. - -The code examples show how to configure replication. Keep in mind that the specified port may be different for you (e.g. `80`) than what is shown in the code snippet. - -import SchemaReplication from '/_includes/code/schema.things.create.replication.mdx'; - - - -### Database sharding - -On the other hand, sharding can be used to horizontally scale Weaviate. Sharding is the process of splitting a database into smaller parts, called shards, and distributing these shards across multiple nodes. - -So a database that holds 2 million records do not need to store all 2 million records on a single node. Instead, it can split the records into smaller parts and store them on different nodes. This allows the database to scale horizontally by adding more nodes to the cluster. - -### Sharding with replication - -You can use both sharding and replication together to horizontally scale and ensure fault tolerance in your Weaviate setup. - -In our example with 6 nodes, we could have a replication factor of 3 and shard the data across 2 nodes each. This way, we have 3 copies of the data spread across 6 nodes, ensuring fault tolerance and high availability. - -For a production setup, this is a common approach to ensure that your Weaviate setup can handle high loads and remain available even if a node fails. Additionally, you can add more nodes to the cluster as needed to scale your Weaviate setup horizontally, ensuring that it can handle more data and more requests. - -## Clean-up - -That's it for this guide. You've successfully deployed Weaviate on a multi-node Kubernetes cluster and learned about replication and sharding. - -If you would like, you can access Weaviate as described before, and work with it. We include [further resources on the next page](./90_next_steps.mdx) for you to explore. - -When you are finished, you can stop the tunnel by pressing `Ctrl+C` in the terminal where you ran `minikube tunnel`, Then, stop Minikube and delete the cluster: - -```bash -minikube stop -minikube delete -``` - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - - diff --git a/docs/academy/deployment/k8s/90_next_steps.mdx b/docs/academy/deployment/k8s/90_next_steps.mdx deleted file mode 100644 index aaa4afa33..000000000 --- a/docs/academy/deployment/k8s/90_next_steps.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Next steps ---- - -Congratulations. You have successfully deployed Weaviate on your Kubernetes cluster, and scaled it to a multi-node setup. 🎉 - -You can now explore the following resources to learn more about Weaviate and how to use it: - -We have the following beginner courses available for Python: -- [101T Work with: Text data](../../py/starter_text_data/index.md) -- [101V Work with: Your own vectors](../../py/starter_custom_vectors/index.md) -- [101T Work with: Multimodal data](../../py/starter_multimodal_data/index.md) - -And for TypeScript/JavaScript: -- [Introduction to Weaviate with TypeScript](/academy/js/starter_text_data) - -What you could explore, then, is how to adapt these examples to a multi-node case with replication and/or sharding. - -### Related documentation - -If you are interested in the architecture behind replication and sharding, please check out the following resources: -- [Replication](/weaviate/concepts/replication-architecture/index.md) -- [Horizontal scaling](/weaviate/concepts/cluster.md) - -Then, check out the section on [resource planning](/weaviate/concepts/resources.md) to estimate how much resources each node of a particular size might be able to handle, and how to plan your cluster accordingly. - -If you have replication configured, you can apply [tunable consistency](/deploy/configuration/replication.md) concepts to read/write operations as well as queries. - -### Further reading - -- How-to guides - - - The [How-to: Manage collections](/weaviate/manage-collections/index.mdx) and [How-to: Manage objects](/weaviate/manage-objects/index.mdx) guides show how to perform data operations (i.e. create, read, update, delete collections and objects within them).. - - [How-to: search](/weaviate/search/index.mdx): Code examples for all types of search operations. - - [How-to: configure Weaviate](/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/weaviate/configuration/compression/pq-compression.md) and [BQ](/weaviate/configuration/compression/bq-compression.md) compression, [backups](/deploy/configuration/backups.md) and [replication](/deploy/configuration/replication.md). -- [Concepts guides](/weaviate/concepts/index.md): Guides for understanding Weaviate's architecture and concepts. -- [API reference](/weaviate/api/index.mdx): Detailed information about Weaviate's APIs. - -import CTASocials from '../../py/_snippets/cta_socials.mdx'; - - - -See you soon! 👋 - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - - diff --git a/docs/academy/deployment/k8s/_snippets/connect.py b/docs/academy/deployment/k8s/_snippets/connect.py deleted file mode 100644 index 5dcf82870..000000000 --- a/docs/academy/deployment/k8s/_snippets/connect.py +++ /dev/null @@ -1,28 +0,0 @@ -# START BasicConnect -import weaviate - -client = weaviate.connect_to_local( - port=80, # The default REST port is 8080 - # grpc_port=50051 # Not needed, as the default gRPC port is 50051 -) -# END BasicConnect - -client.close() - -WEAVIATE_SVC_EXTERNAL_IP = "127.0.0.1" -GRPC_SVC_EXTERNAL_IP = "127.0.0.1" - -# START CustomConnect -import weaviate - -client = weaviate.connect_to_custom( - http_host=WEAVIATE_SVC_EXTERNAL_IP, # The external IP of the weaviate service - http_port=80, # The default REST port is 8080 - http_secure=False, # Whether to use https (secure) for the HTTP API connection - grpc_host=GRPC_SVC_EXTERNAL_IP, # The external IP of the weaviate-grpc service - grpc_port=50051, # The default gRPC port is 50051 - grpc_secure=False # Set to True if the gRPC connection is secure -) -# END CustomConnect - -client.close() diff --git a/docs/academy/deployment/k8s/index.md b/docs/academy/deployment/k8s/index.md deleted file mode 100644 index 4c023749a..000000000 --- a/docs/academy/deployment/k8s/index.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Run Weaviate on Kubernetes" -description: "Learn how to deploy Weaviate with Kubernetes, covering setup, management, and scalability tips." -sidebar_position: 100 ---- - - - - -import LearningGoals from '/src/components/Academy/learningGoals.jsx'; -import CourseUnits from '/src/components/Academy/courseUnits.jsx'; -import { courseData } from '/src/components/Academy/courseData.js' - -## Unit overview - -In this short, project-based unit, you will learn how to deploy Weaviate on Kubernetes, a popular container orchestration platform. - -You will learn how to set up a local Kubernetes cluster and deploy a Weaviate instance on Kubernetes. You will also learn how to configure the Weaviate instance on Kubernetes. - -## Learning objectives - - diff --git a/docs/academy/index.mdx b/docs/academy/index.mdx deleted file mode 100644 index d031156a0..000000000 --- a/docs/academy/index.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Academy - Home -sidebar_position: 0 ---- - -import Courses from '/src/components/Academy/courses.jsx'; -import Units from '/src/components/Academy/units.jsx'; -import { courseData } from '/src/components/Academy/courseData.js' - -We've built these courses to help you build amazing things with Weaviate, faster. - ------ -## Courses ------ - - - -import CustomScriptLoader from '/src/components/scriptSwitch'; - - diff --git a/docs/academy/js/10_set_up_typescript.mdx b/docs/academy/js/10_set_up_typescript.mdx deleted file mode 100644 index 961bfe25b..000000000 --- a/docs/academy/js/10_set_up_typescript.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Set up Javascript/TypeScript for Weaviate -sidebar_position: 10 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FilteredTextBlock from '@site/src/components/Documentation/FilteredTextBlock'; -import WeaviateTypescriptImgUrl from './img/js-ts-weaviate.png'; - -Follow this short guide to make sure that you are set up to use Weaviate with the Typescript/Javascript client. - - -Image alt - -## Install Node.js - -### Is Node.js installed? - -Open a terminal window (e.g. bash, zsh, Windows PowerShell, Windows Terminal), and run: - -```shell -node --version # or node -v -``` - -If you have Node.js installed, you should see a response like `v22.3.0`. The minimum version of Node.js supported by the Weaviate Typescript/Javascript library is `v18`. - - -### Install Node.js - -To install, follow the instructions for your system on [nodejs.org](https://nodejs.org/en/download/package-manager). - -Once you have Node.js installed, check the version again to confirm that you have a recommended version installed. - -:::tip Advanced option: `nvm` -Another good way to install Python is to install `nvm`. This will allow you to manage multiple versions of Node.js on your system. You can find instructions on how to install `nvm` [here](https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating). -::: - - -### (Optional) Set up Typescript - -To install, follow the instructions for your system on [typescriptlang.org](https://www.typescriptlang.org/download/). Once installed, you can find instruction on how to configure Typescript to work with the Weaviate client documented [here](../../weaviate/client-libraries/typescript/index.mdx). - -Now Typescript is ready to use with the Weaviate client. - -## Install the Weaviate client - -Now, you can install the [Weaviate client library](../../weaviate/client-libraries/index.mdx), which will make it much easier to interact with Weaviate using Typescript. - -In a new folder for your project, install the Weaviate client with: - -```shell -npm install weaviate-client -``` - -### Confirm the installation - -To confirm that the Weaviate client is installed, run the following in your terminal: - -```shell -npm view weaviate-client -``` - -You should see an output like: - -```text -3.1.4. -``` - -Congratulations, you are now set up to use Weaviate with the Weaviate TypeScript/JavaScript client library! - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - - diff --git a/docs/academy/js/_category_.json b/docs/academy/js/_category_.json deleted file mode 100644 index 8e708216c..000000000 --- a/docs/academy/js/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "JavaScript/TypeScript", - "position": 20 -} \ No newline at end of file diff --git a/docs/academy/js/_snippets/cta_socials.mdx b/docs/academy/js/_snippets/cta_socials.mdx deleted file mode 100644 index 76c75bbb0..000000000 --- a/docs/academy/js/_snippets/cta_socials.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## Stay in touch! - -We are constantly improving our documentation, so please keep an eye out for new resources and updates, by signing up for our [newsletter](https://newsletter.weaviate.io/) or following us on social media ([Twitter](https://x.com/weaviate_io), [LinkedIn](https://www.linkedin.com/company/weaviate-io/)). \ No newline at end of file diff --git a/docs/academy/js/_snippets/intro_next_steps.mdx b/docs/academy/js/_snippets/intro_next_steps.mdx deleted file mode 100644 index dd7ab6c1e..000000000 --- a/docs/academy/js/_snippets/intro_next_steps.mdx +++ /dev/null @@ -1,32 +0,0 @@ -Congratulations! You have completed this introductory course on Weaviate. - -Now that you have completed this course, you may be interested in exploring our documentation or the Academy for more advanced courses. - -Some of our more popular resources include: - -### Documentation - -- How-to guides - - The [How-to: Manage collections](/weaviate/manage-collections/index.mdx) and [How-to: Manage objects](/weaviate/manage-objects/index.mdx) guides show how to perform data operations (i.e. create, read, update, delete collections and objects within them).. - - [How-to: search](/weaviate/search/index.mdx): Code examples for all types of search operations. - - [How-to: configure Weaviate](/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/weaviate/configuration/compression/pq-compression.md) and [BQ](/weaviate/configuration/compression/bq-compression.md) compression, [backups](/deploy/configuration/backups.md) and [replication](/deploy/configuration/replication.md). -- [Concepts guides](/weaviate/concepts/index.md): Guides for understanding Weaviate's architecture and concepts. -- [API reference](/weaviate/api/index.mdx): Detailed information about Weaviate's APIs. - -### Academy - -- [Named vectors](/academy/py/named_vectors): Learn how to use named vectors to flexibly represent data in Weaviate. -- [Which search is right for me?](/academy/py/standalone/which_search): Learn about the different types of searches in Weaviate and when to use them. -- [Chunking](/academy/py/standalone/chunking): Learn how to use chunking to optimize your search for longer documents. - -import CTASocials from './cta_socials.mdx'; - - - -See you soon! 👋 - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - - diff --git a/docs/academy/js/_snippets/intro_next_steps_js.mdx b/docs/academy/js/_snippets/intro_next_steps_js.mdx deleted file mode 100644 index 59f134651..000000000 --- a/docs/academy/js/_snippets/intro_next_steps_js.mdx +++ /dev/null @@ -1,32 +0,0 @@ -Congratulations! You have completed this introductory course on Weaviate. - -Now that you have completed this course, you may be interested in exploring our documentation or the Academy for more advanced courses. - -Some of our more popular resources include: - -### Documentation - -- How-to guides - - The [How-to: Manage collections](/weaviate/manage-collections/index.mdx) and [How-to: Manage objects](/weaviate/manage-objects/index.mdx) guides show how to perform data operations (i.e. create, read, update, delete collections and objects within them).. - - [How-to: search](/weaviate/search/index.mdx): Code examples for all types of search operations. - - [How-to: configure Weaviate](/weaviate/configuration/index.mdx): Guides for configuring Weaviate, such as [PQ](/weaviate/configuration/compression/pq-compression.md) and [BQ](/weaviate/configuration/compression/bq-compression.md) compression, [backups](/deploy/configuration/backups.md) and [replication](/deploy/configuration/replication.md). -- [Concepts guides](/weaviate/concepts/index.md): Guides for understanding Weaviate's architecture and concepts. -- [API reference](/weaviate/api/index.mdx): Detailed information about Weaviate's APIs. - -### Academy - -- [Working with Text](/academy/js/starter_text_data): Learn how to use work with text data in Weaviate. -- [Which search is right for me?](/academy/js/standalone/which-search): Learn about the different types of searches in Weaviate and when to use them. - - -import CTASocials from './cta_socials.mdx'; - - - -See you soon! 👋 - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - - diff --git a/docs/academy/js/img/js-ts-weaviate.png b/docs/academy/js/img/js-ts-weaviate.png deleted file mode 100644 index 164f3d8e543e377ed445ae3bbb414a170de21fe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6884 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 Nt0`$KRzcr{{2y|d@o@kE diff --git a/docs/academy/js/standalone/_want-stack/_snippets/index.ts b/docs/academy/js/standalone/_want-stack/_snippets/index.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/academy/js/standalone/_want-stack/index.md b/docs/academy/js/standalone/_want-stack/index.md deleted file mode 100644 index 35bc08112..000000000 --- a/docs/academy/js/standalone/_want-stack/index.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: What is the WANT stack -sidebar_position: 10 ---- - -## What is the WANT - -### What is WANT - -Weaviate, AI, Next.js and Typescript. - -The want stack is collection of technologies that simplify the process of build AI Native Applications. - - -#### Weaviate - -Weaviate is a vector database, it gives you these benefits -- vector search -- dynamic generative model selection (you don't get stuck) - -#### AI - -- this ties heavily into everything else, AI is at the center of AI native, leveraging the flexibility of weaviate and teh vastness of its integrations, you can bring AI to your application from embeddings, to generative models to rerankers or recommenders. Without any tie in. The goal is to give you the most flexibility without the burden on choosing - -#### Next.js (or Nuxt.js) - -This brings modern web development, - - -#### Typescript - -Typescript.. add content - - - -### Building WANT applications - -- Resources -- Starter templates -- Learning - - -[Embed Youtube Course] - -A vector search is also versatile. It can be used to search multiple data modalities (e.g. text, images, audio, etc.), and across multiple languages. - - -## Learning objectives - -import LearningGoalsExp from '/src/components/Academy/learningGoalsExp.mdx'; - - - -import LearningGoals from '/src/components/Academy/learningGoals.jsx'; - - - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - - diff --git a/docs/academy/js/standalone/client-server/10_why-client-server.mdx b/docs/academy/js/standalone/client-server/10_why-client-server.mdx deleted file mode 100644 index d87953f8e..000000000 --- a/docs/academy/js/standalone/client-server/10_why-client-server.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: What is the client-server application ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FilteredTextBlock from '@site/src/components/Documentation/FilteredTextBlock'; -import WeaviateTypescriptImgUrl from '/docs/academy/js/standalone/client-server/_img/architecture.jpg'; - - - -### What is a client-server application - -A client-server application is one that runs on a client device while accessing information from a remote server. - -In the context of building applications with Weaviate, this means having a server as an intermediary to handle all interactions with your database as opposed to interacting with your database directly from your client application. - -Image alt - -This section aims to guide you through how to do that as you build applications with the Weaviate Typescript v3 client: [weaviate-client](https://www.npmjs.com/package/weaviate-client). - - - -### Using the weaviate-client in a client-server application - -The v3 client uses gRPC to connect to your Weaviate instance. The client supports Node.js, server-based development. It does not support browser-based web client development. - -Install the client by following [these instructions](../../../../weaviate/client-libraries/typescript/index.mdx#installation). A big benefit of using the new v3 client is the introduction of the gRPC protocol. A faster, more reliable platform to handle interactions with the database at scale. Unfortunately, gRPC does not support browser-based client development. - -Besides the requirements of running the [weaviate-client](../../../../weaviate/client-libraries/typescript/index.mdx), the client-server architecture is reliably more secure than interactions directly from the client. - -Having a client-server approach means you can optimize your use of Weaviate by implementing load balancing, user and session management, middleware and various other optimizations. - -In the next sections we'll look at how to build client-server applications with.. -- [Using backend web frameworks](./20_building-client-server.mdx) -- [Using fullstack web frameworks](./30_fullstack.mdx) - diff --git a/docs/academy/js/standalone/client-server/20_building-client-server.mdx b/docs/academy/js/standalone/client-server/20_building-client-server.mdx deleted file mode 100644 index 3e6917ed1..000000000 --- a/docs/academy/js/standalone/client-server/20_building-client-server.mdx +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: Using Backend Web frameworks ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FilteredTextBlock from '@site/src/components/Documentation/FilteredTextBlock'; -import TSCode from '!!raw-loader!./_snippets/20_backend.js'; -import ClientCode from '!!raw-loader!./_snippets/index.html'; -import WeaviateTypescriptImgUrl from '/docs/academy/js/standalone/client-server/_img/backend.jpg'; - - - -This approach involves having two separate tools. One to build your server application; ideally a backend framework and another to build your client application. For this example, we will be using [Express.js](https://expressjs.com/en/starter/hello-world.html) to build a backend server, and [Thunder Client](https://www.thunderclient.com/) to act as a client and make API calls to our backend server. - -Image alt - - -## Building a server - -The server will have a single route that accepts a `searchTerm` as a query parameter. - -### 1. Initialize a Node.js application - -We will use Express to build our server, in a new directory, run the following command to initialize a new project with Node.js - -```bash -npm init -``` -### 2. Install project dependencies - -With our project initialized, install `dotenv` to manage environment variables, `express` to build our server and the `weaviate-client` to manage communication with our Weaviate database. - -```bash -npm install express dotenv weaviate-client -``` - - -### 3. Setup your Weaviate database - -We'll start by creating a free sandbox account on [Weaviate Cloud](https://console.weaviate.cloud/). Follow [this guide](/cloud/manage-clusters/connect) if you have trouble setting up a sandbox project. - - -You will need your Weaviate cluster URL and API key. If you don't already have one, create a new Cohere [API key](https://dashboard.cohere.com/api-keys), we use Cohere as our [embedding model](../using-ml-models/10_embedding.mdx). When done, add all three to your `.env` file. - - - - - - -#### 3.5 Add data to Weaviate - -Follow our recipe on [loading data](https://github.com/weaviate/recipes-ts/blob/main/similarity-search/cohere/load.ts) into Weaviate to import data to your Weaviate database. - -### 4. Connecting to Weaviate - -In `config/weaviate.js`, paste the following code. - - - - - -The code above helps us create a connection to our Weaviate instance hosted on Weaviate Cloud. - -### 5. Create a Search route - -In your project root, create a file called `app.js` and paste the following code in it. - - - - - -With this we can run searches on the `/search` route. We use `nearText()` to run our semantic search. - -#### 6. Run your server -In your terminal run the following command to start your server. - -```bash -node app.js -``` - -Your server should be running on `localhost:3005`. - - - -## Building a client Application - -With our server built, we can now make a call from a client application. We'll create a basic client application with HTML and JavaScript. - -Alternatively, in [Thunder Client](https://www.thunderclient.com/), you can make a call to `http://localhost:3005/search?searchTerm=countries in asia` to query your server. - - -### 1. Create a client application - -In your root folder, create a file called `index.html` and paste the following code in it. - - - - - - -### 2. Run your client application - -In your root folder, run the following in your terminal - -```bash -npx http-server -``` - - -This client application makes a call to the express server you built, displaying results. - - diff --git a/docs/academy/js/standalone/client-server/30_fullstack.mdx b/docs/academy/js/standalone/client-server/30_fullstack.mdx deleted file mode 100644 index ef99b4785..000000000 --- a/docs/academy/js/standalone/client-server/30_fullstack.mdx +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Using Fullstack Web frameworks ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FilteredTextBlock from '@site/src/components/Documentation/FilteredTextBlock'; -import WeaviateTypescriptImgUrl from '/docs/academy/js/standalone/client-server/_img/fullstack.jpg'; -import TSCode from '!!raw-loader!./_snippets/20_backend.js'; - -This approach involves having a single tool to build both your server application and client application. In modern web development terms, such a tool is called a fullstack web framework. For this example, we will be using [Next.js](https://nextjs.org/) - -Image alt - -## Building with Next.js - -### 1. Create a Next.js application - -To create a new application with Next.js, run the following command in your terminal. - -```bash -create-next-app –ts –app -``` -### 2. Install project dependencies - -With our project initialized, install the `weaviate-client` to manage communication with our Weaviate database. - -```bash -npm install weaviate-client -``` - -### 3. Setup your Weaviate database - -We'll start by creating a free sandbox account on [Weaviate Cloud](https://console.weaviate.cloud/). Follow [this guide](/cloud/manage-clusters/connect) if you have trouble setting up a sandbox project. - -You will need your Weaviate cluster URL and API key. If you don't already have one, create a new Cohere [API key](https://dashboard.cohere.com/api-keys), we use Cohere as our [embedding model](../using-ml-models/10_embedding.mdx). When done, add all three to your `.env` file. - - - - - -#### 3.5 Add data to Weaviate - -Follow our recipe on [loading data](https://github.com/weaviate/recipes-ts/blob/main/similarity-search/cohere/load.ts) into Weaviate to import data to your Weaviate database. - -### 4. Initialize Weaviate - -Create a file in `utils/weaviate.ts` and paste the following code in it. The code helps us create a connection to our Weaviate instance hosted on Weaviate Cloud. - - -```ts -import weaviate from "weaviate-client"; - -const client = await weaviate.connectToWeaviateCloud(process.env.WEAVIATE_URL as string,{ - authCredentials: new weaviate.ApiKey(process.env.WEAVIATE_API_KEY as string), - headers: { - 'X-Cohere-Api-Key': process.env.COHERE_API_KEY as string - } - }, -); -``` - -### 4. Create a Search Server Action - -Next, in `./utils/action.ts`, paste the following code. With this we can run semantic searches with `nearText()` by calling the function `vectorSearch()` in other parts of our application. - - -```ts -"use server"; - -import { connectToDB } from './weaviate.ts' - -export async function vectorSearch(searchTerm: string) { - - const myCollection = client.collections.use('MyCollectionName'); - - const response = await myCollection.query.nearText(searchTerm, { - limit: 8, - returnMetadata: ['distance'], - }) - - return response - } -``` - -### 5. Fetch data from your server in your client application. -In the `./app` folder, paste the following code in `page.tsx`. We run a search on our client and display the results on the webpage. - -```tsx - -import { vectorSearch } from '@/utils/action.ts'; - -export default async function Home() { - const search = "water sports i can win a medal in" - const data = await vectorSearch(search); - - return ( - - -

- { data } -

- - - ) - -} - -``` -#### 6. Run your Fullstack App - -In your terminal, run the following command to start your application. - - -```bash -npm run dev -``` - -Your application should be running on `localhost:3000`. - -## Other frameworks - - -Although only detailing Next.js in guide, you can build with Weaviate using a number of fullstack frameworks including but not limited to [Nuxt](https://nuxt.com/), [Solid](https://www.solidjs.com/) and [Angular](https://angular.dev/) - -We have a list of [starter](https://github.com/topics/weaviate-starter) applications you can play around with as well. - - - - diff --git a/docs/academy/js/standalone/client-server/_img/architecture.jpg b/docs/academy/js/standalone/client-server/_img/architecture.jpg deleted file mode 100644 index 9a8ddb7cf30716d1faaa408c0f2d469ffdc50e4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114935 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 N^NhoP_>9*>{|Adq?)m@# diff --git a/docs/academy/js/standalone/client-server/_img/backend.jpg b/docs/academy/js/standalone/client-server/_img/backend.jpg deleted file mode 100644 index c5fe962ce0d26686055c4388f7cb607040ad83f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76182 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 { - try { - const client = await weaviate.connectToWeaviateCloud(process.env.WEAVIATE_URL,{ - authCredentials: new weaviate.ApiKey(process.env.WEAVIATE_API_KEY), - headers: { - 'X-Cohere-Api-Key': process.env.COHERE_API_KEY || '', - } - } - ) - console.log(`We are connected! ${await client.isReady()}`); - return client - } catch (error) { - console.error(`Error: ${error.message}`); - process.exit(1); - } -}; - -// END weaviate.js -const dotEnv = ``` -// START .env -COHERE_API_KEY= -WEAVIATE_URL= -WEAVIATE_API_KEY= -// END .env -``` - -// START app.js -import express from 'express'; -import { connectToDB } from './config/weaviate.js'; - -const app = express(); -const port = 3005 - -const client = await connectToDB(); - -app.get('/', async function(req, res, next) { - var searchTerm = req.query.searchTerm; - - const wikipedia = client.collections.use("Wikipedia") - - try { - const response = await wikipedia.query.nearText(searchTerm, { - limit: 3 - }) - - res.send(response.objects) - } catch (error) { - console.error(`Error: ${error.message}`); - } - }) - -app.listen(port, () => { - console.log(`App listening on port ${port}`) -}) - - - -// END app.js diff --git a/docs/academy/js/standalone/client-server/_snippets/30_fullstack.js b/docs/academy/js/standalone/client-server/_snippets/30_fullstack.js deleted file mode 100644 index 2458d472a..000000000 --- a/docs/academy/js/standalone/client-server/_snippets/30_fullstack.js +++ /dev/null @@ -1,67 +0,0 @@ -// START weaviate.js - -import weaviate from 'weaviate-client' -import 'dotenv/config'; - -export const connectToDB = async () => { - try { - const client = await weaviate.connectToWeaviateCloud(process.env.WEAVIATE_URL,{ - authCredentials: new weaviate.ApiKey(process.env.WEAVIATE_API_KEY), - headers: { - 'X-Cohere-Api-Key': process.env.COHERE_API_KEY || '', - } - } - ) - console.log(`We are connected! ${await client.isReady()}`); - return client - } catch (error) { - console.error(`Error: ${error.message}`); - process.exit(1); - } -}; - -// END weaviate.js - -// .env -` -COHERE_API_KEY= -WEAVIATE_URL= -WEAVIATE_API_KEY= -` -// END .env - - -// START app.js -import express from 'express'; -import { connectToDB } from './config/weaviate.js'; - -const app = express(); -const port = 3005 - -const client = await connectToDB(); - - - -app.get('/', async function(req, res, next) { - var searchTerm = req.query.searchTerm; - - const wikipedia = client.collections.use("Wikipedia") - - try { - const response = await wikipedia.query.nearText(searchTerm, { - limit: 5 - }) - - res.send(response.objects) - } catch (error) { - console.error(`Error: ${error.message}`); - } - }) - -app.listen(port, () => { - console.log(`App listening on port ${port}`) -}) - - - -// END app.js diff --git a/docs/academy/js/standalone/client-server/_snippets/index.html b/docs/academy/js/standalone/client-server/_snippets/index.html deleted file mode 100644 index 0819a2dfe..000000000 --- a/docs/academy/js/standalone/client-server/_snippets/index.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - Weaviate Search Client - - - -
-

Semantic Search Results

- -
Loading...
-
-
-
- - - - - \ No newline at end of file diff --git a/docs/academy/js/standalone/client-server/index.md b/docs/academy/js/standalone/client-server/index.md deleted file mode 100644 index 55bc75cc1..000000000 --- a/docs/academy/js/standalone/client-server/index.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Building client-server Applications ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FilteredTextBlock from '@site/src/components/Documentation/FilteredTextBlock'; - - -## Overview - -When building web applications in JavaScript with Weaviate using the [weaviate-client](https://www.npmjs.com/package/weaviate-client), it is recommended that you employ the client-server architecture. - -This may vary depending what tools you are using to build your web application. - -Fullstack frameworks like Next.js have support for server side development and API creation to communicate with Weaviate. This would happen via REST calls or for Next.js specifically, Server functions. This approach means coupling your client and server applications. - -Backend web frameworks like Express let you create an API to communicate with Weaviate. This API can be consumed via REST calls from your client application. This approach means completely decoupling your client and server applications. - - -### Prerequisites - -- A Node.js environment with `weaviate-client` installed. -- Familiarity with Weaviate's search capabilities. -- Some experience building Modern Web Applications with JavaScript. -- Intermediate coding proficiency (e.g. JavaScript). - -## Learning objectives - -import LearningGoalsExp from '/src/components/Academy/learningGoalsExp.mdx'; - - - - - -import LearningGoals from '/src/components/Academy/learningGoals.jsx'; - - - -## Questions and feedback - -import DocsFeedback from '/_includes/docs-feedback.mdx'; - - \ No newline at end of file diff --git a/docs/academy/js/standalone/index.md b/docs/academy/js/standalone/index.md deleted file mode 100644 index 13c1a747d..000000000 --- a/docs/academy/js/standalone/index.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Short units -sidebar_position: 900 ---- - -import LearningGoals from '/src/components/Academy/learningGoals.jsx'; -import CourseUnits from '/src/components/Academy/courseUnits.jsx'; -import { courseData } from '/src/components/Academy/courseData.js' - -## Overview - -This section hosts short, standalone units that you can read independently of any other topics. - -## Units - - diff --git a/docs/academy/js/standalone/using-ml-models/10_embedding.mdx b/docs/academy/js/standalone/using-ml-models/10_embedding.mdx deleted file mode 100644 index e580b44cc..000000000 --- a/docs/academy/js/standalone/using-ml-models/10_embedding.mdx +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: Using Embedding models in Weaviate ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FilteredTextBlock from '@site/src/components/Documentation/FilteredTextBlock'; -import TSCode from '!!raw-loader!./_snippets/10_embedding.ts'; -import EmbeddingModelImage from '/docs/academy/js/standalone/using-ml-models/_img/embedding-models.jpg'; -import Unimodal from '/docs/academy/js/standalone/using-ml-models/_img/unimodal.jpg'; -import Multimodal from '/docs/academy/js/standalone/using-ml-models/_img/multimodal.jpg'; - - -## What are Embedding Models - -Embedding models are machine learning models trained to represent information as an array of numbers, frequently referred to as vector embeddings. Vectors or vector embeddings are numeric representations of data that represent certain properties or features. This representation can be used to efficiently search through objects in a vector space. - -Image alt - - -## When to use Embedding Models - -Embeddings are the worker horses behind modern search and Retrieval-Augmented Generation (RAG) applications. They are great for.. - -- **Search:** Results of searches are ranked by the distance from an input query vector. -- **Classification:** Items are classified by what category their vector representation is closest to. -- **Recommendations:** Items with similar vector representations are recommended to users. - - -## Applications of Embedding Models - -Embedding models, like most machine learning models are typically limited to one or more modalities. - -We use modality to describe the type of input or output that a machine learning model can process or interact with to run. Typically, embedding modals fall into two buckets, uni-modal or multimodal. - - -- **Uni-modal Embeddings**: These embeddings represents a single modality in a multi-dimensional vector space. Examples of these are [embed-multilingual-v3.0](https://cohere.com/blog/introducing-embed-v3) a text embedding model by Cohere or [marengo 2.7](https://www.twelvelabs.io/blog/introducing-marengo-2-7) a video embedding models by Twelve Labs. - -Image alt - - -- **Multimodal Embeddings**: These embeddings represent multiple modalities in a multi-dimensional space. Allowing cross modal retrieval and clustering. [CLIP](https://openai.com/index/clip/) is a popular multimodal model that can create embeddings of text, audio and video data. - -Image alt - - - -## Using Embedding Models in Weaviate - -Weaviate takes most of the complexity of generating and managing embeddings away! Weaviate is configured to support many different vectorizer models and vectorizer service providers. It also gives you the option of providing your own vectors. - -In Weaviate, vector embeddings power hybrid and semantic search. - -Lets walk through the process to configure embedding models in Weaviate and make a semantic search. We'll start by creating a free sandbox account on [Weaviate Cloud](https://console.weaviate.cloud/). Follow [this guide](/cloud/manage-clusters/connect) if you have trouble setting up a sandbox project. - -### Step 1: Connect to a Weaviate instance - - - - - -Initialize your connection with Weaviate and add relevant environment variables necessary to access third party embedding models. - -### Step 2: Define a Collection and Embedding Model - - - - - -When creating a collection in Weaviate, we define what embedding model we want to use. In this example we use a text embedding model by Cohere to create vector embeddings our data. This is **embed-multilingual-v3.0** when we use the `text2vecCohere()` module. - - -### Step 3: Importing data - - - - - -Once our collection is created, we import data. It is at import time where we interact with our embedding model. The Weaviate vectorizer sends objects to the embedding model we define during collection creation. At the end of this, we have both our data objects and their corresponding vector representations stored in our Vector Database. Now we can run semantic search queries. - - -### Step 4: Running a Semantic Search - - - - - - -Here we make a query and set `return` as true so we can see the objects' vectors in our response. Read more about [search here](/weaviate/concepts/search). - - - - -## Bonus Learning - -### Vector Representations -Vector representations are the fundamental output of embedding models. They translate complex data (text, images, etc.) into fixed-length arrays of numbers that capture semantic meaning. - -- **Dimensionality**: Typically ranges from 384 to 1536 dimensions, depending on the model. A larger dimensionality usually means more accuracy but also a higher memory footprint for generated vectors. - -- **Format**: Vectors are typically floating point numbers, usually normalized to a specific range. - -### Distance metrics - -[Distance metrics](/weaviate/config-refs/distances) quantify the similarity between vector embeddings. Weaviate uses **[cosine similarity](https://weaviate.io/blog/distance-metrics-in-vector-search#cosine-similarity)** as the default distance metric for semantic similarity. - - - - - -Embedding models vary when it comes to performance and ability, [read through this article](https://weaviate.io/blog/how-to-choose-an-embedding-model) so you have an idea of what to think about decide between various models. - diff --git a/docs/academy/js/standalone/using-ml-models/20_generative.mdx b/docs/academy/js/standalone/using-ml-models/20_generative.mdx deleted file mode 100644 index 33f84237a..000000000 --- a/docs/academy/js/standalone/using-ml-models/20_generative.mdx +++ /dev/null @@ -1,148 +0,0 @@ ---- -title: Using Generative Models in Weaviate ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import FilteredTextBlock from '@site/src/components/Documentation/FilteredTextBlock'; -import TSCode from '!!raw-loader!./_snippets/20_generative.ts'; -import WeaviateTypescriptImgUrl from '/docs/academy/js/standalone/using-ml-models/_img/generative.jpg'; -import Unimodal from '/docs/academy/js/standalone/using-ml-models/_img/unimodal-gen.jpg'; -import Multimodal from '/docs/academy/js/standalone/using-ml-models/_img/multimodal-gen.jpg'; - - -## What are Generative Models - -Generative models are machine learning models that when prompted, can generate original data guided by instructions in the prompt i.e. text, images, and other forms. This original data is derived from data it was trained on but does not mimic it like for like. - -Image alt - -Generative Models encompass so many types of models, we will specifically focus on large language models (LLMs). - -## When to use Generative Models - -Generative models are stars in the limelight of retrieval augmented generation (RAG) and agentic workflows. They are great for... - -- **Translation:** Models can perform zero-shot translate text from one language to another with extremely high accuracy. -- **Code Generation:** Models can take high-level instructions and turn them into functional custom code. -- **Image Generation:** Models can consistently generate high quality images from text instructions in a prompt. - - -## Applications of Generative Models - - -Large Language Models (LLMs), like [Claude](https://www.anthropic.com/claude) family by Anthropic or [Gemini](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference) by Google are specialized types of generative models focused on text data. These models, like most machine learning models are typically limited to one or more modalities. - -We use modality to describe the type of input or output that a machine learning model can process or interact with to run. Typically, generative modals fall into two buckets, uni-modal or multimodal. - - -- **Uni-modal Generation:** In the context on LLMs, uni-modal generation defines a models ability to generate content and receive instructions in a single modality, this modality is usually text. - -Image alt - - - -- **Multimodal Generation:** In the context on LLMs, multimodal generation defines a models ability to generate and receive instructions in multiple modalities. This can range from text input to generation or even image input to audio generation. - -Image alt - - -### Using Generative Models in Weaviate - -Weaviate is configured to support many generative models and generative model providers. You can even plug in your own generative model too depending on where in the Weaviate workflow you need generative capabilities. - - -In Weaviate, generative models power RAG (generative search). Lets walk through what its like to use generative models in Weaviate. We'll start by creating a free sandbox account on [Weaviate Cloud](https://console.weaviate.cloud/). Follow [this guide](/cloud/manage-clusters/connect) if you have trouble setting up a sandbox project. - -## Step 1: Connect to a Weaviate instance - - - - - -Initialize your connection with Weaviate and add relevant environment variables necessary to access third party generative models. - -## Step 2: Define a Collection and Generative Model - - - - - -When creating a collection in Weaviate, we define what generative model we want to use. In this example we use a text generation model by Cohere to generate new data. This is **command-r** by default. - -## Step 3: Importing data - - - - - -Once our collection is created, we import data. It is at import time where we interact with our embedding model. The Weaviate vectorizer sends objects to the embedding model we define during collection creation. At the end of this, we have both our data objects and their corresponding vector representations stored in our Vector Database. Now we can run semantic search queries and with a generative model defined, RAG! - -## Step 4: Making a Single Task Generative Search - - - - - -Here we use a `singlePrompt` to make `n` requests to the language model where `n` is the number of responses we get from our semantic search. We use `limit` to strictly define the number of responses we get. We can place responses from each response into our prompt with this format `{ answer }` i.e we want the answer property from our search response to be translated to French. - -## Step 5: Making a grouped Generative Search - - - - - - -Here we use the `groupedTask` prompt format to group all the response from our search and send them alongside our prompt as context for what ever we are requesting. You can see with `groupedProperties` we only pass the answer property from all the results we get as context to the large language model, giving us control of what information will inform the models output. - - - -## Bonus Learning -### Prompt engineering & Output control -Prompt engineering is the science of refining inputs or "prompts" to AI models to achieve desired or more effective outputs. It involves.. - -- **Clear Instructions:** Being specific and explicit in your requests helps the AI understand exactly what you need. Instead of "analyze this," try "provide a detailed analysis of the key themes and supporting evidence." - - -### Context windows -The context window represents how much information an AI model can "see" and process at once. Think of it as the model's working memory for each conversation. - -- **Token Limits:** Context windows are measured in tokens (roughly 3/4 of a word in English). Different models have different limits - from a few thousand to hundreds of thousands of tokens. - -Both managing context windows and prompt engineering are a great way to begin refining your RAG implementation. - -Generative models vary when it comes to performance and ability. [Browse our integrations page](/weaviate/model-providers) to have a better idea of what options you can use in Weaviate. - diff --git a/docs/academy/js/standalone/using-ml-models/_img/embedding-models.jpg b/docs/academy/js/standalone/using-ml-models/_img/embedding-models.jpg deleted file mode 100644 index d81264c35add4856a849f07f121adea1935e3dfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69842 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