From 2b5b4132d4f53a12fb221830667eb9ecf49bc670 Mon Sep 17 00:00:00 2001 From: Sebastian Witalec Date: Thu, 20 Jun 2024 11:22:48 +0200 Subject: [PATCH 1/3] adding Integrations docs --- .vscode/markdown.code-snippets | 29 ++++ developers/integrations/index.md | 10 ++ developers/integrations/llamaindex/index.md | 32 +++++ .../llamaindex/page-with-notes.md | 58 ++++++++ docusaurus.config.js | 124 ++++++++---------- sidebars.js | 6 + static/og/integrations/home.jpg | Bin 0 -> 29287 bytes static/og/integrations/llamaindex.jpg | Bin 0 -> 32712 bytes 8 files changed, 192 insertions(+), 67 deletions(-) create mode 100644 developers/integrations/index.md create mode 100644 developers/integrations/llamaindex/index.md create mode 100644 developers/integrations/llamaindex/page-with-notes.md create mode 100644 static/og/integrations/home.jpg create mode 100644 static/og/integrations/llamaindex.jpg diff --git a/.vscode/markdown.code-snippets b/.vscode/markdown.code-snippets index 2316b223f..95c36f9a2 100644 --- a/.vscode/markdown.code-snippets +++ b/.vscode/markdown.code-snippets @@ -251,4 +251,33 @@ ], "description": "For marking features as being added in a certain version" }, + + "Integrations Tabs code": { + "prefix": "integrations-tabs-code", + "scope": "markdown", + "body": [ + "", + "import Tabs from '@theme/Tabs';", + "import TabItem from '@theme/TabItem';", + "", + "", + "", + "", + "```python", + "# Python v4 example goes here", + "# note there is an empty line before this code snippet,", + "# without the empty line the code won't render", + "```", + "", + "", + "", + "```python", + "# Python v3 example goes here", + "```", + "", + "", + "", + ], + "description": "Adds the tabs section for code examples" + }, } diff --git a/developers/integrations/index.md b/developers/integrations/index.md new file mode 100644 index 000000000..98b0322f7 --- /dev/null +++ b/developers/integrations/index.md @@ -0,0 +1,10 @@ +--- +title: Home +sidebar_position: 0 +image: og/integrations/home.jpg +# hide_table_of_contents: true +# hide_title: true +# tags: [] +--- + +Integrations page - welcome message \ No newline at end of file diff --git a/developers/integrations/llamaindex/index.md b/developers/integrations/llamaindex/index.md new file mode 100644 index 000000000..31286bf38 --- /dev/null +++ b/developers/integrations/llamaindex/index.md @@ -0,0 +1,32 @@ +--- +title: LlamaIndex +sidebar_position: 0 +image: og/docs/llamaindex.jpg +--- + +Integrations page - welcome message + +:::note +`index.md` files is how you create a page that is a the root of the folder. +For example `llamaindex/index.md` is where the content for the page of the LlamaIndex folder goes. +::: + +:::tip + +``` +sidebar_position: 0 +``` + +`sidebar_position` on an `index.md` page tells docusaurus the nav position of the folder 😉 + +On any other page, it tells docusaurus the location of the page within the folder 🤔 +::: + +:::note +Make sure to generate a template for each new integrations folder ;) +Ask Sebastian for the Google Slides doc with the og template ;) + +``` +image: og/docs/llamaindex.jpg +``` +::: \ No newline at end of file diff --git a/developers/integrations/llamaindex/page-with-notes.md b/developers/integrations/llamaindex/page-with-notes.md new file mode 100644 index 000000000..707cb0134 --- /dev/null +++ b/developers/integrations/llamaindex/page-with-notes.md @@ -0,0 +1,58 @@ +--- +title: LlamaIndex - some notes +sidebar_position: 1 +image: og/docs/llamaindex.jpg +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +LlamaIndex - some notes + +## First Code Examples + +:::info +In VS Code you can use `integrations-tabs-code` code snippet to generate the code to show code with tabs. + +Just start typing `inttab` and press `Enter` +::: + +:::warning +Note, this will also add two imports for `Tabs` and `TabItem`. +You only need it once. Ideally, you should add it just under `---` on line 5. +::: + + + + +```python +# Python v4 example goes here +# note there is an empty line before this code snippet, +# without the empty line the code won't render +``` + + + +```python +# Python v3 example goes here +``` + + + + +## Second Code example - v4 only + + + + +```python +# Even if you plan to have one code example, we should always use the tabbed approach. +``` + + + +## Admonitions + +:::tip +You can add these pretty admonitions, by typing `doc-inf` press Enter and select from the list of options. i.e. this is `tip` +::: + diff --git a/docusaurus.config.js b/docusaurus.config.js index 84b273736..946669d9a 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -254,66 +254,66 @@ const config = { position: 'right', to: '/platform', }, - { type: 'dropdown', - label: 'Services', - position: 'right', - items: [ - { - label: 'Services Overview', - href: '/services', + { + type: 'dropdown', + label: 'Services', + position: 'right', + items: [ + { + label: 'Services Overview', + href: '/services', - }, - { - label: 'Serverless Cloud', - href: '/services/serverless', + }, + { + label: 'Serverless Cloud', + href: '/services/serverless', - }, - { - label: 'Enterprise Cloud', - href: '/services/enterprise-cloud', + }, + { + label: 'Enterprise Cloud', + href: '/services/enterprise-cloud', - }, - { - label: 'Bring Your Own Cloud', - href: '/services/byoc', + }, + { + label: 'Bring Your Own Cloud', + href: '/services/byoc', - }, - { - label: 'Education & Support', - href: '/services/education-and-support', + }, + { + label: 'Education & Support', + href: '/services/education-and-support', - }, - { - label: 'Pricing', - href: '/pricing', + }, + { + label: 'Pricing', + href: '/pricing', + }, + ] + }, - }, - ] - } - , - { type: 'dropdown', - label: 'Solutions', - position: 'right', - items: [ - { - label: 'Hybrid Search', - href: '/hybrid-search', + { + type: 'dropdown', + label: 'Solutions', + position: 'right', + items: [ + { + label: 'Hybrid Search', + href: '/hybrid-search', - }, - { - label: 'RAG', - href: '/rag', + }, + { + label: 'RAG', + href: '/rag', - }, - { - label: 'Generative Feedback Loops', - href: '/gen-feedback-loops', + }, + { + label: 'Generative Feedback Loops', + href: '/gen-feedback-loops', - }, + }, + ] + }, - ] - } - , { type: 'dropdown', label: 'Developers', @@ -331,6 +331,12 @@ const config = { sidebarid: 'wcsSidebar', type: 'doc', }, + { + label: 'Integrations', + docId: 'integrations/index', + sidebarid: 'integrationsSidebar', + type: 'doc', + }, { label: 'Learn with Academy', docId: 'academy/index', @@ -340,7 +346,6 @@ const config = { { label: 'Blog', to: '/blog', - }, { label: 'Online Workshops & Events', @@ -358,7 +363,6 @@ const config = { label: 'Community', to: '/community', }, - { label: 'Paper Reviews', to: '/papers', @@ -435,18 +439,15 @@ const config = { }, { html: `GitHub`, - to: 'https://github.com/weaviate/weaviate', position: 'right', - }, - + }, { label: 'Try Now', className: 'tryNow', to: 'https://console.weaviate.cloud', position: 'right', }, - { type: 'search', position: 'right', @@ -520,7 +521,6 @@ const config = { to: '/learn/knowledgecards', }, { - label: 'Academy', to: '/developers/academy', }, @@ -550,7 +550,6 @@ const config = { to: '/podcast', }, { - label: 'Meetups', to: '#', className: 'footer__title subtitle', @@ -575,14 +574,11 @@ const config = { label: 'Toronto', to: 'https://www.meetup.com/weaviate-toronto', }, - ], }, { title: 'Company', items: [ - - { label: 'About', to: '/company/about-us', @@ -611,7 +607,6 @@ const config = { { label: 'AWS', to: '/partners/aws', - }, { label: 'Google Cloud', @@ -626,17 +621,13 @@ const config = { { label: 'Become a Partner', to: '/partners', - }, - - ], }, { title: 'Follow Us', items: [ - { label: 'GitHub', to: 'https://github.com/weaviate/weaviate', @@ -658,7 +649,6 @@ const config = { to: 'https://youtube.com/weaviate_io', }, { - label: 'Linkedin', to: 'https://www.linkedin.com/company/weaviate-io', }, diff --git a/sidebars.js b/sidebars.js index b5e76fcdb..01f0eaf2c 100644 --- a/sidebars.js +++ b/sidebars.js @@ -65,6 +65,12 @@ const sidebars = { href: '/developers/contributor-guide', }, ], + integrationsSidebar: [ + { + type: 'autogenerated', + dirName: 'integrations' + }, + ], }; module.exports = sidebars; diff --git a/static/og/integrations/home.jpg b/static/og/integrations/home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80569ad67c7973ea8b02b21b943c559745e3d127 GIT binary patch literal 29287 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 literal 0 HcmV?d00001 diff --git a/static/og/integrations/llamaindex.jpg b/static/og/integrations/llamaindex.jpg new file mode 100644 index 0000000000000000000000000000000000000000..57bb5262bd59f7267d87595077e3cbfbb176e58d GIT binary patch literal 32712 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 PTHEeD6nHTF=jZ Date: Fri, 28 Jun 2024 14:29:45 -0400 Subject: [PATCH 2/3] Add template for docs page --- .../cloud-hyperscalers/aws/aws.md | 4 ++ .../cloud-hyperscalers/google/google.md | 4 ++ .../integrations/cloud-hyperscalers/index.md | 7 +++ .../integrations/cloud-platforms/index.md | 7 +++ .../cloud-platforms/replicate/replicate.md | 4 ++ .../data-pipeline/firecrawl/index.md | 7 +++ .../integrations/data-pipeline/index.md | 7 +++ .../integrations/data-pipeline/spark/index.md | 7 +++ .../data-pipeline/unstructured/index.md | 7 +++ developers/integrations/index.md | 10 ++-- developers/integrations/llamaindex/index.md | 32 ---------- .../llamaindex/page-with-notes.md | 58 ------------------- .../llm-frameworks/dspy}/dspy.md | 4 +- .../llm-frameworks/haystack/haystack.md | 4 ++ .../integrations/llm-frameworks/index.md | 7 +++ .../llm-frameworks/langchain/langchain.md | 4 ++ .../llm-frameworks/llamaindex/LlamaIndex.md | 7 +++ .../semantic-kernel/semantic-kernel.md | 4 ++ .../arize/index.md | 7 +++ .../observability-and-evaluation/index.md | 7 +++ .../langtrace/index.md | 7 +++ .../nomic/index.md | 7 +++ .../ragas/index.md | 7 +++ .../wandb/index.md | 7 +++ developers/weaviate/more-resources/index.md | 2 - 25 files changed, 129 insertions(+), 99 deletions(-) create mode 100644 developers/integrations/cloud-hyperscalers/aws/aws.md create mode 100644 developers/integrations/cloud-hyperscalers/google/google.md create mode 100644 developers/integrations/cloud-hyperscalers/index.md create mode 100644 developers/integrations/cloud-platforms/index.md create mode 100644 developers/integrations/cloud-platforms/replicate/replicate.md create mode 100644 developers/integrations/data-pipeline/firecrawl/index.md create mode 100644 developers/integrations/data-pipeline/index.md create mode 100644 developers/integrations/data-pipeline/spark/index.md create mode 100644 developers/integrations/data-pipeline/unstructured/index.md delete mode 100644 developers/integrations/llamaindex/index.md delete mode 100644 developers/integrations/llamaindex/page-with-notes.md rename developers/{weaviate/more-resources => integrations/llm-frameworks/dspy}/dspy.md (99%) create mode 100644 developers/integrations/llm-frameworks/haystack/haystack.md create mode 100644 developers/integrations/llm-frameworks/index.md create mode 100644 developers/integrations/llm-frameworks/langchain/langchain.md create mode 100644 developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md create mode 100644 developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md create mode 100644 developers/integrations/observability-and-evaluation/arize/index.md create mode 100644 developers/integrations/observability-and-evaluation/index.md create mode 100644 developers/integrations/observability-and-evaluation/langtrace/index.md create mode 100644 developers/integrations/observability-and-evaluation/nomic/index.md create mode 100644 developers/integrations/observability-and-evaluation/ragas/index.md create mode 100644 developers/integrations/observability-and-evaluation/wandb/index.md diff --git a/developers/integrations/cloud-hyperscalers/aws/aws.md b/developers/integrations/cloud-hyperscalers/aws/aws.md new file mode 100644 index 000000000..56b8057ee --- /dev/null +++ b/developers/integrations/cloud-hyperscalers/aws/aws.md @@ -0,0 +1,4 @@ +--- +title: AWS +sidebar_position: 1 +--- \ No newline at end of file diff --git a/developers/integrations/cloud-hyperscalers/google/google.md b/developers/integrations/cloud-hyperscalers/google/google.md new file mode 100644 index 000000000..2432482e5 --- /dev/null +++ b/developers/integrations/cloud-hyperscalers/google/google.md @@ -0,0 +1,4 @@ +--- +title: GCP +sidebar_position: 2 +--- \ No newline at end of file diff --git a/developers/integrations/cloud-hyperscalers/index.md b/developers/integrations/cloud-hyperscalers/index.md new file mode 100644 index 000000000..148c76819 --- /dev/null +++ b/developers/integrations/cloud-hyperscalers/index.md @@ -0,0 +1,7 @@ +--- +title: Cloud Hyperscalers +sidebar_position: 2 +image: og/integrations/home.jpg +--- + +Home page for cloud hyperscalers \ No newline at end of file diff --git a/developers/integrations/cloud-platforms/index.md b/developers/integrations/cloud-platforms/index.md new file mode 100644 index 000000000..17d14a762 --- /dev/null +++ b/developers/integrations/cloud-platforms/index.md @@ -0,0 +1,7 @@ +--- +title: Cloud Platforms +sidebar_position: 3 +image: og/integrations/home.jpg +--- + +Home page for cloud platforms \ No newline at end of file diff --git a/developers/integrations/cloud-platforms/replicate/replicate.md b/developers/integrations/cloud-platforms/replicate/replicate.md new file mode 100644 index 000000000..a17a13f21 --- /dev/null +++ b/developers/integrations/cloud-platforms/replicate/replicate.md @@ -0,0 +1,4 @@ +--- +title: Replicate +sidebar_position: 1 +--- \ No newline at end of file diff --git a/developers/integrations/data-pipeline/firecrawl/index.md b/developers/integrations/data-pipeline/firecrawl/index.md new file mode 100644 index 000000000..baf972a18 --- /dev/null +++ b/developers/integrations/data-pipeline/firecrawl/index.md @@ -0,0 +1,7 @@ +--- +title: Firecrawl +sidebar_position: 2 +image: og/integrations/home.jpg +--- + +Home page for Firecrawl \ No newline at end of file diff --git a/developers/integrations/data-pipeline/index.md b/developers/integrations/data-pipeline/index.md new file mode 100644 index 000000000..a5378cfff --- /dev/null +++ b/developers/integrations/data-pipeline/index.md @@ -0,0 +1,7 @@ +--- +title: Data Pipeline +sidebar_position: 2 +image: og/integrations/home.jpg +--- + +Home page for data pipeline \ No newline at end of file diff --git a/developers/integrations/data-pipeline/spark/index.md b/developers/integrations/data-pipeline/spark/index.md new file mode 100644 index 000000000..728065d32 --- /dev/null +++ b/developers/integrations/data-pipeline/spark/index.md @@ -0,0 +1,7 @@ +--- +title: Spark +sidebar_position: 1 +image: og/integrations/home.jpg +--- + +Home page for Spark \ No newline at end of file diff --git a/developers/integrations/data-pipeline/unstructured/index.md b/developers/integrations/data-pipeline/unstructured/index.md new file mode 100644 index 000000000..e976b9bf9 --- /dev/null +++ b/developers/integrations/data-pipeline/unstructured/index.md @@ -0,0 +1,7 @@ +--- +title: Unstructured +sidebar_position: 3 +image: og/integrations/home.jpg +--- + +Home page for data pipeline \ No newline at end of file diff --git a/developers/integrations/index.md b/developers/integrations/index.md index 98b0322f7..49831ce20 100644 --- a/developers/integrations/index.md +++ b/developers/integrations/index.md @@ -1,10 +1,10 @@ --- -title: Home +title: Integrations sidebar_position: 0 image: og/integrations/home.jpg -# hide_table_of_contents: true -# hide_title: true -# tags: [] --- -Integrations page - welcome message \ No newline at end of file +Integrations page - welcome message + + + diff --git a/developers/integrations/llamaindex/index.md b/developers/integrations/llamaindex/index.md deleted file mode 100644 index 31286bf38..000000000 --- a/developers/integrations/llamaindex/index.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: LlamaIndex -sidebar_position: 0 -image: og/docs/llamaindex.jpg ---- - -Integrations page - welcome message - -:::note -`index.md` files is how you create a page that is a the root of the folder. -For example `llamaindex/index.md` is where the content for the page of the LlamaIndex folder goes. -::: - -:::tip - -``` -sidebar_position: 0 -``` - -`sidebar_position` on an `index.md` page tells docusaurus the nav position of the folder 😉 - -On any other page, it tells docusaurus the location of the page within the folder 🤔 -::: - -:::note -Make sure to generate a template for each new integrations folder ;) -Ask Sebastian for the Google Slides doc with the og template ;) - -``` -image: og/docs/llamaindex.jpg -``` -::: \ No newline at end of file diff --git a/developers/integrations/llamaindex/page-with-notes.md b/developers/integrations/llamaindex/page-with-notes.md deleted file mode 100644 index 707cb0134..000000000 --- a/developers/integrations/llamaindex/page-with-notes.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: LlamaIndex - some notes -sidebar_position: 1 -image: og/docs/llamaindex.jpg ---- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -LlamaIndex - some notes - -## First Code Examples - -:::info -In VS Code you can use `integrations-tabs-code` code snippet to generate the code to show code with tabs. - -Just start typing `inttab` and press `Enter` -::: - -:::warning -Note, this will also add two imports for `Tabs` and `TabItem`. -You only need it once. Ideally, you should add it just under `---` on line 5. -::: - - - - -```python -# Python v4 example goes here -# note there is an empty line before this code snippet, -# without the empty line the code won't render -``` - - - -```python -# Python v3 example goes here -``` - - - - -## Second Code example - v4 only - - - - -```python -# Even if you plan to have one code example, we should always use the tabbed approach. -``` - - - -## Admonitions - -:::tip -You can add these pretty admonitions, by typing `doc-inf` press Enter and select from the list of options. i.e. this is `tip` -::: - diff --git a/developers/weaviate/more-resources/dspy.md b/developers/integrations/llm-frameworks/dspy/dspy.md similarity index 99% rename from developers/weaviate/more-resources/dspy.md rename to developers/integrations/llm-frameworks/dspy/dspy.md index 25cd6d65a..a05900c5d 100644 --- a/developers/weaviate/more-resources/dspy.md +++ b/developers/integrations/llm-frameworks/dspy/dspy.md @@ -1,6 +1,6 @@ --- -title: DSPy and Weaviate Integration -sidebar_position: 5 +title: DSPy +sidebar_position: 1 image: og/docs/more-resources.jpg --- [DSPy](https://github.com/stanfordnlp/dspy) is a framework for programming language models created by Stanford NLP. DSPy introduces two key concepts: **programming model** and **optimizers**. diff --git a/developers/integrations/llm-frameworks/haystack/haystack.md b/developers/integrations/llm-frameworks/haystack/haystack.md new file mode 100644 index 000000000..f6d506117 --- /dev/null +++ b/developers/integrations/llm-frameworks/haystack/haystack.md @@ -0,0 +1,4 @@ +--- +title: Haystack +sidebar_position: 3 +--- \ No newline at end of file diff --git a/developers/integrations/llm-frameworks/index.md b/developers/integrations/llm-frameworks/index.md new file mode 100644 index 000000000..f7313e33d --- /dev/null +++ b/developers/integrations/llm-frameworks/index.md @@ -0,0 +1,7 @@ +--- +title: LLM Frameworks +sidebar_position: 1 +image: og/integrations/home.jpg +--- + +Home page for LLM Frameworks \ No newline at end of file diff --git a/developers/integrations/llm-frameworks/langchain/langchain.md b/developers/integrations/llm-frameworks/langchain/langchain.md new file mode 100644 index 000000000..dd34c32e2 --- /dev/null +++ b/developers/integrations/llm-frameworks/langchain/langchain.md @@ -0,0 +1,4 @@ +--- +title: LangChain +sidebar_position: 4 +--- \ No newline at end of file diff --git a/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md b/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md new file mode 100644 index 000000000..ae530d667 --- /dev/null +++ b/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md @@ -0,0 +1,7 @@ +--- +title: LlamaIndex +sidebar_position: 2 +image: og/docs/llamaindex.jpg +--- + +Integrations page - welcome message diff --git a/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md b/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md new file mode 100644 index 000000000..2073fcb77 --- /dev/null +++ b/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md @@ -0,0 +1,4 @@ +--- +title: Semantic Kernel +sidebar_position: 3 +--- \ No newline at end of file diff --git a/developers/integrations/observability-and-evaluation/arize/index.md b/developers/integrations/observability-and-evaluation/arize/index.md new file mode 100644 index 000000000..f24d6a2a4 --- /dev/null +++ b/developers/integrations/observability-and-evaluation/arize/index.md @@ -0,0 +1,7 @@ +--- +title: Arize +sidebar_position: 1 +image: og/integrations/home.jpg +--- + +Home page for Arize \ No newline at end of file diff --git a/developers/integrations/observability-and-evaluation/index.md b/developers/integrations/observability-and-evaluation/index.md new file mode 100644 index 000000000..57a76659b --- /dev/null +++ b/developers/integrations/observability-and-evaluation/index.md @@ -0,0 +1,7 @@ +--- +title: Observability and Evaluation +sidebar_position: 7 +image: og/integrations/home.jpg +--- + +Home page for Observability and Evaluation \ No newline at end of file diff --git a/developers/integrations/observability-and-evaluation/langtrace/index.md b/developers/integrations/observability-and-evaluation/langtrace/index.md new file mode 100644 index 000000000..14d0d74fd --- /dev/null +++ b/developers/integrations/observability-and-evaluation/langtrace/index.md @@ -0,0 +1,7 @@ +--- +title: Langtrace +sidebar_position: 2 +image: og/integrations/home.jpg +--- + +Home page for Langtrace \ No newline at end of file diff --git a/developers/integrations/observability-and-evaluation/nomic/index.md b/developers/integrations/observability-and-evaluation/nomic/index.md new file mode 100644 index 000000000..7f5bc586c --- /dev/null +++ b/developers/integrations/observability-and-evaluation/nomic/index.md @@ -0,0 +1,7 @@ +--- +title: Nomic +sidebar_position: 3 +image: og/integrations/home.jpg +--- + +Home page for Nomic \ No newline at end of file diff --git a/developers/integrations/observability-and-evaluation/ragas/index.md b/developers/integrations/observability-and-evaluation/ragas/index.md new file mode 100644 index 000000000..55aaa0c4b --- /dev/null +++ b/developers/integrations/observability-and-evaluation/ragas/index.md @@ -0,0 +1,7 @@ +--- +title: Ragas +sidebar_position: 4 +image: og/integrations/home.jpg +--- + +Home page for Ragas \ No newline at end of file diff --git a/developers/integrations/observability-and-evaluation/wandb/index.md b/developers/integrations/observability-and-evaluation/wandb/index.md new file mode 100644 index 000000000..b654bb84b --- /dev/null +++ b/developers/integrations/observability-and-evaluation/wandb/index.md @@ -0,0 +1,7 @@ +--- +title: Weights and Biases +sidebar_position: 5 +image: og/integrations/home.jpg +--- + +Home page for Weights and Biases \ No newline at end of file diff --git a/developers/weaviate/more-resources/index.md b/developers/weaviate/more-resources/index.md index 0a6522de4..fdd50eb60 100644 --- a/developers/weaviate/more-resources/index.md +++ b/developers/weaviate/more-resources/index.md @@ -27,8 +27,6 @@ For additional information, try these sources. - [Knowledge base of old issues](https://github.com/weaviate/weaviate/issues?utf8=%E2%9C%93&q=label%3Abug) - [Weaviate slack channel](https://weaviate.io/slack) -## Integration Resources -- [DSPy and Weaviate](./dspy.md) ## Questions and feedback From 027b94927014cff1b1717041cd717e92de4e2daa Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 3 Jul 2024 11:37:08 -0400 Subject: [PATCH 3/3] Update positioning of categories --- .../integrations/cloud-hyperscalers/index.md | 2 +- .../integrations/cloud-platforms/index.md | 2 +- .../integrations/data-pipeline/index.md | 2 +- developers/integrations/index.md | 22 ++++++++++++++++++- .../llm-frameworks/haystack/haystack.md | 4 ---- .../integrations/llm-frameworks/index.md | 2 +- .../observability-and-evaluation/index.md | 2 +- 7 files changed, 26 insertions(+), 10 deletions(-) delete mode 100644 developers/integrations/llm-frameworks/haystack/haystack.md diff --git a/developers/integrations/cloud-hyperscalers/index.md b/developers/integrations/cloud-hyperscalers/index.md index 148c76819..22eb4958d 100644 --- a/developers/integrations/cloud-hyperscalers/index.md +++ b/developers/integrations/cloud-hyperscalers/index.md @@ -1,6 +1,6 @@ --- title: Cloud Hyperscalers -sidebar_position: 2 +sidebar_position: 1 image: og/integrations/home.jpg --- diff --git a/developers/integrations/cloud-platforms/index.md b/developers/integrations/cloud-platforms/index.md index 17d14a762..6f7ecc376 100644 --- a/developers/integrations/cloud-platforms/index.md +++ b/developers/integrations/cloud-platforms/index.md @@ -1,6 +1,6 @@ --- title: Cloud Platforms -sidebar_position: 3 +sidebar_position: 2 image: og/integrations/home.jpg --- diff --git a/developers/integrations/data-pipeline/index.md b/developers/integrations/data-pipeline/index.md index a5378cfff..8943e98eb 100644 --- a/developers/integrations/data-pipeline/index.md +++ b/developers/integrations/data-pipeline/index.md @@ -1,6 +1,6 @@ --- title: Data Pipeline -sidebar_position: 2 +sidebar_position: 3 image: og/integrations/home.jpg --- diff --git a/developers/integrations/index.md b/developers/integrations/index.md index 49831ce20..124419e28 100644 --- a/developers/integrations/index.md +++ b/developers/integrations/index.md @@ -4,7 +4,27 @@ sidebar_position: 0 image: og/integrations/home.jpg --- -Integrations page - welcome message +Weaviate's integration ecosystem enables developers to build various applications leveraging Weaviate and another technology. +You can find all notebooks and examples on [Weaviate Recipes](https://github.com/weaviate/recipes)! +## About the Categories +The ecosystem is broken out by 5 categories: +* **Cloud Hyperscalers** - +* **Cloud Platforms** - +* **Data Pipeline** - +* **LLM Frameworks** - +* **Observability and Evaluation** - + + + +## List of Companies + +| Company Category | Companies | +|------------------|-----------| +| Cloud Hyperscalers | Google, AWS | +| Cloud Platforms | Replicate | +| Data Pipeline | Spark, Unstructured, Firecrawl | +| LLM Frameworks | DSPy, LangChain, LlamaIndex, Semantic Kernel | +| Observability and Evaluation | Arize, Langtrace, Nomic, Ragas, Weights & Biases | \ No newline at end of file diff --git a/developers/integrations/llm-frameworks/haystack/haystack.md b/developers/integrations/llm-frameworks/haystack/haystack.md deleted file mode 100644 index f6d506117..000000000 --- a/developers/integrations/llm-frameworks/haystack/haystack.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: Haystack -sidebar_position: 3 ---- \ No newline at end of file diff --git a/developers/integrations/llm-frameworks/index.md b/developers/integrations/llm-frameworks/index.md index f7313e33d..e44c6f104 100644 --- a/developers/integrations/llm-frameworks/index.md +++ b/developers/integrations/llm-frameworks/index.md @@ -1,6 +1,6 @@ --- title: LLM Frameworks -sidebar_position: 1 +sidebar_position: 4 image: og/integrations/home.jpg --- diff --git a/developers/integrations/observability-and-evaluation/index.md b/developers/integrations/observability-and-evaluation/index.md index 57a76659b..40246e4a3 100644 --- a/developers/integrations/observability-and-evaluation/index.md +++ b/developers/integrations/observability-and-evaluation/index.md @@ -1,6 +1,6 @@ --- title: Observability and Evaluation -sidebar_position: 7 +sidebar_position: 5 image: og/integrations/home.jpg ---