From 2b5b4132d4f53a12fb221830667eb9ecf49bc670 Mon Sep 17 00:00:00 2001 From: Sebastian Witalec Date: Thu, 20 Jun 2024 11:22:48 +0200 Subject: [PATCH 01/35] 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 2316b223f1..95c36f9a2a 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 0000000000..98b0322f79 --- /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 0000000000..31286bf380 --- /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 0000000000..707cb0134d --- /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 84b2737361..946669d9a6 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 b5e76fcdb8..01f0eaf2ca 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 02/35] 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 0000000000..56b8057eef --- /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 0000000000..2432482e5e --- /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 0000000000..148c768194 --- /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 0000000000..17d14a7628 --- /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 0000000000..a17a13f211 --- /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 0000000000..baf972a186 --- /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 0000000000..a5378cffff --- /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 0000000000..728065d327 --- /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 0000000000..e976b9bf96 --- /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 98b0322f79..49831ce205 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 31286bf380..0000000000 --- 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 707cb0134d..0000000000 --- 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 25cd6d65ae..a05900c5da 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 0000000000..f6d5061175 --- /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 0000000000..f7313e33dd --- /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 0000000000..dd34c32e2c --- /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 0000000000..ae530d667c --- /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 0000000000..2073fcb77d --- /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 0000000000..f24d6a2a4a --- /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 0000000000..57a76659b1 --- /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 0000000000..14d0d74fd6 --- /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 0000000000..7f5bc586c0 --- /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 0000000000..55aaa0c4b7 --- /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 0000000000..b654bb84bb --- /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 0a6522de48..fdd50eb601 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 03/35] 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 148c768194..22eb4958d8 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 17d14a7628..6f7ecc3764 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 a5378cffff..8943e98eb1 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 49831ce205..124419e28c 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 f6d5061175..0000000000 --- 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 f7313e33dd..e44c6f1043 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 57a76659b1..40246e4a33 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 --- From 51d05a454c61e623adcd6dd1d330a6af6163e728 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Tue, 6 Aug 2024 14:15:09 -0400 Subject: [PATCH 04/35] Cloud Hyperscalers (#2329) --- .../cloud-hyperscalers/aws/aws.md | 19 +++++++- .../cloud-hyperscalers/google/google.md | 22 +++++++++- .../integrations/cloud-hyperscalers/index.md | 6 ++- .../index.md | 4 +- .../replicate/replicate.md | 0 developers/integrations/ecosystem.png | Bin 0 -> 147127 bytes developers/integrations/index.md | 25 +++++++---- .../integrations/llm-frameworks/dspy/dspy.md | 41 +++++++++--------- .../integrations/llm-frameworks/index.md | 6 ++- 9 files changed, 85 insertions(+), 38 deletions(-) rename developers/integrations/{cloud-platforms => container-infrastructure}/index.md (53%) rename developers/integrations/{cloud-platforms => container-infrastructure}/replicate/replicate.md (100%) create mode 100644 developers/integrations/ecosystem.png diff --git a/developers/integrations/cloud-hyperscalers/aws/aws.md b/developers/integrations/cloud-hyperscalers/aws/aws.md index 56b8057eef..36940519f9 100644 --- a/developers/integrations/cloud-hyperscalers/aws/aws.md +++ b/developers/integrations/cloud-hyperscalers/aws/aws.md @@ -1,4 +1,19 @@ --- -title: AWS +title: Amazon Web Services sidebar_position: 1 ---- \ No newline at end of file +--- + +Launch a Weaviate cluster from the Amazon Web Services (AWS) marketplace. AWS supports model provider integrations through SageMaker and Bedrock. + +## AWS and Weaviate +Weaviate integrates with [AWS](https://aws.amazon.com/) infrastructure and services like [SageMaker](https://aws.amazon.com/sagemaker/) and [Bedrock](https://aws.amazon.com/bedrock/). + +* [Deploy Weaviate from AWS Marketplace](/developers/weaviate/installation/aws-marketplace) +* [Run embedding and generative models on SageMaker and Bedrock](/developers/weaviate/model-providers/aws) + +## Our Resources +**Hands on Learning**: Content framed to build your technical understanding with end-to-end tutorials. + +| Topic | Description | Resource | +| --- | --- | --- | +| RAG with Cohere models on Amazon Bedrock and Weaviate | The example use case generates targeted advertisements for vacation stay listings based on a target audience. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/cloud-hyperscalers/aws/RAG_Cohere_Weaviate_v4_client.ipynb) diff --git a/developers/integrations/cloud-hyperscalers/google/google.md b/developers/integrations/cloud-hyperscalers/google/google.md index 2432482e5e..9021837e09 100644 --- a/developers/integrations/cloud-hyperscalers/google/google.md +++ b/developers/integrations/cloud-hyperscalers/google/google.md @@ -1,4 +1,22 @@ --- -title: GCP +title: Google Cloud Platform sidebar_position: 2 ---- \ No newline at end of file +--- + +Launch a Weaviate cluster from the Google Cloud Platform (GCP) marketplace. Weaviate integrates with Google AI Studio and Google Vertex AI. + +## GCP and Weaviate +Weaviate integrates with GCP infrastructure and services like Google [AI Studio](https://ai.google.dev/aistudio) and [Vertex AI](https://cloud.google.com/vertex-ai?hl=en). + +* [Deploy Weaviate on GCP Marketplace](/developers/weaviate/installation/gc-marketplace) +* [Run embedding and generative models on Vertex AI and AI Studio](/developers/weaviate/model-providers/google) + + +## Our Resources +**Hands on Learning**: Content framed to build your technical understanding with end-to-end tutorials. + +| Topic | Description | Resource | +| --- | --- | --- | +| Build a multimodal application using Gemini Flash | This notebook shows you how to use Weaviate and Gemini Flash to build a multimodal application. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/cloud-hyperscalers/google/gemini/multimodal-and-gemini-flash/NY-Roadshow-Gemini.ipynb) | +| BigQuery and Weaviate | Sync data between BigQuery and Weaviate using DSPy. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/cloud-hyperscalers/google/bigquery/BigQuery-Weaviate-DSPy-RAG.ipynb) | +| Semantic Search with Gemini Ultra | This notebook shows you how to use Weaviate and Gemini Ultra. |[Notebook](https://github.com/weaviate/recipes/blob/main/integrations/cloud-hyperscalers/google/gemini/gemini-ultra/gemini-ultra-weaviate.ipynb) | \ No newline at end of file diff --git a/developers/integrations/cloud-hyperscalers/index.md b/developers/integrations/cloud-hyperscalers/index.md index 22eb4958d8..f62e566617 100644 --- a/developers/integrations/cloud-hyperscalers/index.md +++ b/developers/integrations/cloud-hyperscalers/index.md @@ -4,4 +4,8 @@ sidebar_position: 1 image: og/integrations/home.jpg --- -Home page for cloud hyperscalers \ No newline at end of file +Cloud hyperscalers offer a variety of services and infrastructure for large-scale computing resources, storage, and more. + +Learn about how Weaviate integrates with: +* [Amazon Web Services](/developers/integrations/cloud-hyperscalers/aws) +* [Google Cloud Platform](/developers/integrations/cloud-hyperscalers/google) \ No newline at end of file diff --git a/developers/integrations/cloud-platforms/index.md b/developers/integrations/container-infrastructure/index.md similarity index 53% rename from developers/integrations/cloud-platforms/index.md rename to developers/integrations/container-infrastructure/index.md index 6f7ecc3764..33d8e63c67 100644 --- a/developers/integrations/cloud-platforms/index.md +++ b/developers/integrations/container-infrastructure/index.md @@ -1,7 +1,7 @@ --- -title: Cloud Platforms +title: Container Infrastructure sidebar_position: 2 image: og/integrations/home.jpg --- -Home page for cloud platforms \ No newline at end of file +Add content here \ No newline at end of file diff --git a/developers/integrations/cloud-platforms/replicate/replicate.md b/developers/integrations/container-infrastructure/replicate/replicate.md similarity index 100% rename from developers/integrations/cloud-platforms/replicate/replicate.md rename to developers/integrations/container-infrastructure/replicate/replicate.md diff --git a/developers/integrations/ecosystem.png b/developers/integrations/ecosystem.png new file mode 100644 index 0000000000000000000000000000000000000000..ea364e35caf858fe694a489f2d515775535326ab GIT binary patch literal 147127 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

*!y8=`O0>y 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 literal 0 HcmV?d00001 diff --git a/developers/integrations/index.md b/developers/integrations/index.md index 124419e28c..a7c7b6d7af 100644 --- a/developers/integrations/index.md +++ b/developers/integrations/index.md @@ -6,16 +6,23 @@ image: og/integrations/home.jpg 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)! +All the notebooks and code examples are on [Weaviate Recipes](https://github.com/weaviate/recipes)! + +alt + ## About the Categories -The ecosystem is broken out by 5 categories: +The ecosystem is divided into these categories: -* **Cloud Hyperscalers** - -* **Cloud Platforms** - -* **Data Pipeline** - -* **LLM Frameworks** - -* **Observability and Evaluation** - +* **Cloud Hyperscalers** - Large-scale computing and storage +* **Container Infrastructure** - Run and scale containerized applications +* **Data Pipeline** - Data ingestion and web scraping +* **LLM Frameworks** - Build generative AI applications +* **Observability and Evaluation** - Monitor and analyze generative AI workflows @@ -23,8 +30,8 @@ The ecosystem is broken out by 5 categories: | Company Category | Companies | |------------------|-----------| -| Cloud Hyperscalers | Google, AWS | -| Cloud Platforms | Replicate | +| Cloud Hyperscalers | [Google](/developers/integrations/cloud-hyperscalers/google), [AWS](/developers/integrations/cloud-hyperscalers/aws), Azure| +| Container Infrastructure | Modal, 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/dspy/dspy.md b/developers/integrations/llm-frameworks/dspy/dspy.md index a05900c5da..79a2d40ff4 100644 --- a/developers/integrations/llm-frameworks/dspy/dspy.md +++ b/developers/integrations/llm-frameworks/dspy/dspy.md @@ -31,32 +31,31 @@ The resources are broken into two categories: ### Hands on Learning -| Topic | Details | -| --- | --- | -| **Getting Started with RAG in DSPy** | Learn about the four components needed to build a DSPy program: Installation, settings, datasets with `dspy.Example`, LLM metrics, DSPy programming model, and optimization. [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/1.Getting-Started-with-RAG-in-DSPy.ipynb) and [Video](https://youtu.be/CEuUG4Umfxs?si=4Gp8gR9glmoMJNaU) | -| **DSPy + Weaviate for the Next Generation of LLM Apps** | Build a 4-layer DSPy program for generating blog posts from queries. [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/2.Writing-Blog-Posts-with-DSPy.ipynb) and [Video](https://youtu.be/ickqCzFxWj0?si=AxCbD9tq2cbAH6bB)| -| **RAG with Persona** | Build a compound AI system with DSPy, Cohere, and Weaviate, where you'll add a persona to the language model. [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/fullstack-recipes/RAGwithPersona/4.RAG-with-Persona.ipynb) and [Post](https://twitter.com/ecardenas300/status/1765444492348243976)| -| **Adding Depth to RAG Programs** | Enhancing DSPy programs by integrating unique input-output examples and multiple LLMs. [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/3.Adding-Depth-to-RAG-Programs.ipynb) and [Video](https://youtu.be/0c7Ksd6BG88?si=YUF2wm1ncUTkSuPQ) | -| **Hurricane: Writing Blog Posts with Generative Feedback Loops** | Introduction to Hurricane, a web app for demonstrating generative feedback loops with blog posts. [Notebook](https://github.com/weaviate-tutorials/Hurricane) and [Blog](/blog/hurricane-generative-feedback-loops) | -| **Structured Outputs with DSPy** | The three methods for structuring outputs in DSPy programs. [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/4.Structured-Outputs-with-DSPy.ipynb) and [Video](https://youtu.be/tVw3CwrN5-8?si=P7fWeXzQ7p-2SFYF) | -| **Building RAG with Command R+ from Cohere, DSPy, and Weaviate** | Overview of Command R+ with a quick RAG demo in DSPy. [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/llms/Command-R-Plus.ipynbb) and [Video](https://youtu.be/6dgXALb_5Ag?si=nSX2AnmpbUau_2JF) | -| **Advanced Optimizers in DSPy** | Dive into optimizing DSPy programs with various techniques. [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/5.Advanced-Optimizers.ipynb) | -| **Llama 3 RAG Demo with DSPy Optimization, Ollama, and Weaviate** | Integrating Llama3 with DSPy and optimizing prompts with MIPRO. [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/llms/Llama3.ipynb) and [Video](https://youtu.be/1h3_h8t3L14?si=G4d-aY5Ynpv8ckea)| -| **BigQuery and Weaviate orchestrated with DSPy** | Build an end-to-end RAG pipeline that uses BigQuery and Weaviate using DSPy. [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/cloud-hyperscalers/google/bigquery/BigQuery-Weaviate-DSPy-RAG.ipynb)| - +| Topic | Description | Resource | +| --- | --- | --- | +| Getting Started with RAG in DSPy | Learn about the four components needed to build a DSPy program: Installation, settings, datasets with `dspy.Example`, LLM metrics, DSPy programming model, and optimization. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/1.Getting-Started-with-RAG-in-DSPy.ipynb), [Video](https://youtu.be/CEuUG4Umfxs?si=4Gp8gR9glmoMJNaU) | +| DSPy + Weaviate for the Next Generation of LLM Apps | Build a 4-layer DSPy program for generating blog posts from queries. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/2.Writing-Blog-Posts-with-DSPy.ipynb), [Video](https://youtu.be/ickqCzFxWj0?si=AxCbD9tq2cbAH6bB)| +| RAG with Persona | Build a compound AI system with DSPy, Cohere, and Weaviate, where you'll add a persona to the language model. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/fullstack-recipes/RAGwithPersona/4.RAG-with-Persona.ipynb), [Post](https://twitter.com/ecardenas300/status/1765444492348243976)| +| Adding Depth to RAG Programs | Enhancing DSPy programs by integrating unique input-output examples and multiple LLMs. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/3.Adding-Depth-to-RAG-Programs.ipynb), [Video](https://youtu.be/0c7Ksd6BG88?si=YUF2wm1ncUTkSuPQ) | +| Hurricane: Writing Blog Posts with Generative Feedback Loops | Introduction to Hurricane, a web app for demonstrating generative feedback loops with blog posts. | [Notebook](https://github.com/weaviate-tutorials/Hurricane), [Blog](/blog/hurricane-generative-feedback-loops) | +| Structured Outputs with DSPy | The three methods for structuring outputs in DSPy programs. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/4.Structured-Outputs-with-DSPy.ipynb), [Video](https://youtu.be/tVw3CwrN5-8?si=P7fWeXzQ7p-2SFYF) | +| Building RAG with Command R+ from Cohere, DSPy, and Weaviate | Overview of Command R+ with a quick RAG demo in DSPy. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/llms/Command-R-Plus.ipynbb), [Video](https://youtu.be/6dgXALb_5Ag?si=nSX2AnmpbUau_2JF) | +| Advanced Optimizers in DSPy | Dive into optimizing DSPy programs with various techniques. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/5.Advanced-Optimizers.ipynb) | +| Llama 3 RAG Demo with DSPy Optimization, Ollama, and Weaviate | Integrating Llama3 with DSPy and optimizing prompts with MIPRO. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/llms/Llama3.ipynb), [Video](https://youtu.be/1h3_h8t3L14?si=G4d-aY5Ynpv8ckea)| +| BigQuery and Weaviate orchestrated with DSPy | Build an end-to-end RAG pipeline that uses BigQuery and Weaviate using DSPy. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/cloud-hyperscalers/google/bigquery/BigQuery-Weaviate-DSPy-RAG.ipynb)| ### Read and Listen -| Topic | Details | -| --- | --- | -| **DSPy and ColBERT with Omar Khattab! - Weaviate Podcast #85** | Omar Khattab joins the Weaviate podcast to discuss DSPy and ColBERT. [Video](https://www.youtube.com/watch?v=CDung1LnLbY) | -| **DSPy Explained**| The core concepts of DSPy and walks through the introduction notebooks showing how to compile a simple retrieve-then-read RAG program and Multi-Hop RAG Program. [Video](https://youtu.be/41EfOY0Ldkc?si=sFieUeHc9rXRn6uk)| -| **XMC.dspy with Karel D'Oosterlinck - Weaviate Podcast #87** | Karel D'Oosterlinck joins the Weaviate podcast to discuss IReRa (Infer-Retrieve-Rank). [Video](https://youtu.be/_ye26_8XPcs?si=ZBodgHbOcaq2Kwky) -| **Intro to DSPy: Goodbye Prompting, Hello Programming** | Overview of DSPy and how it solves the fragility problem in LLM-based applications. [Blog](https://towardsdatascience.com/intro-to-dspy-goodbye-prompting-hello-programming-4ca1c6ce3eb9)| -| **Fine-Tuning Cohere’s Reranker** | Generate synthetic data with DSPy to fine-tune Cohere’s reranker model. [Blog](/blog/fine-tuning-coheres-reranker)| -| **Your Language Model Deserves Better Prompting** | Overview of the DSPy optimizers for prompt tuning. [Blog](/blog/dspy-optimizers)| +| Topic | Description | Resource | +| --- | --- | --- | +| DSPy and ColBERT with Omar Khattab! - Weaviate Podcast #85 | Omar Khattab joins the Weaviate podcast to discuss DSPy and ColBERT. | [Video](https://www.youtube.com/watch?v=CDung1LnLbY) | +| DSPy Explained| The core concepts of DSPy and walks through the introduction notebooks showing how to compile a simple retrieve-then-read RAG program and Multi-Hop RAG Program. | [Video](https://youtu.be/41EfOY0Ldkc?si=sFieUeHc9rXRn6uk)| +| XMC.dspy with Karel D'Oosterlinck - Weaviate Podcast #87 | Karel D'Oosterlinck joins the Weaviate podcast to discuss IReRa (Infer-Retrieve-Rank). | [Video](https://youtu.be/_ye26_8XPcs?si=ZBodgHbOcaq2Kwky) +| Intro to DSPy: Goodbye Prompting, Hello Programming | Overview of DSPy and how it solves the fragility problem in LLM-based applications. | [Blog](https://towardsdatascience.com/intro-to-dspy-goodbye-prompting-hello-programming-4ca1c6ce3eb9)| +| Fine-Tuning Cohere’s Reranker | Generate synthetic data with DSPy to fine-tune Cohere’s reranker model. |[Blog](/blog/fine-tuning-coheres-reranker)| +| Your Language Model Deserves Better Prompting | Overview of the DSPy optimizers for prompt tuning. | [Blog](/blog/dspy-optimizers)| ## Questions and feedback diff --git a/developers/integrations/llm-frameworks/index.md b/developers/integrations/llm-frameworks/index.md index e44c6f1043..383d6db672 100644 --- a/developers/integrations/llm-frameworks/index.md +++ b/developers/integrations/llm-frameworks/index.md @@ -4,4 +4,8 @@ sidebar_position: 4 image: og/integrations/home.jpg --- -Home page for LLM Frameworks \ No newline at end of file +Add content here + + + +Add content here \ No newline at end of file From e8e177b889d0db9bf1433aaae2ae738cf6f736ac Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Tue, 6 Aug 2024 15:29:02 -0400 Subject: [PATCH 05/35] update hyperscaler landing page --- developers/integrations/cloud-hyperscalers/index.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/developers/integrations/cloud-hyperscalers/index.md b/developers/integrations/cloud-hyperscalers/index.md index f62e566617..478313ccbd 100644 --- a/developers/integrations/cloud-hyperscalers/index.md +++ b/developers/integrations/cloud-hyperscalers/index.md @@ -1,11 +1,10 @@ --- title: Cloud Hyperscalers sidebar_position: 1 -image: og/integrations/home.jpg --- -Cloud hyperscalers offer a variety of services and infrastructure for large-scale computing resources, storage, and more. +Cloud hyperscalers offer a variety of services and infrastructure for large-scale computing and storage. -Learn about how Weaviate integrates with: +Learn about how Weaviate integrates with these hyperscalers: * [Amazon Web Services](/developers/integrations/cloud-hyperscalers/aws) * [Google Cloud Platform](/developers/integrations/cloud-hyperscalers/google) \ No newline at end of file From 5c07d46c20c9eac81c78819912bc78dbc0015de9 Mon Sep 17 00:00:00 2001 From: daveatweaviate <144175318+daveatweaviate@users.noreply.github.com> Date: Wed, 7 Aug 2024 10:45:21 -0400 Subject: [PATCH 06/35] DR-586 add menu item (#2430) --- docusaurus.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 9d5ca11d78..0de053042d 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -341,7 +341,7 @@ const config = { items: [ { type: 'html', - value : '

', + value : '', className: 'dropDownContainer2', }, /* { From 777c0db90d938bbf50ff1a658c9a3144f8c1f9a7 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Thu, 8 Aug 2024 18:10:07 -0400 Subject: [PATCH 07/35] Add compute infra companies --- .../aws/{aws.md => index.md} | 0 .../google/{google.md => index.md} | 0 .../compute-infrastructure/index.md | 11 +++++++++++ .../compute-infrastructure/modal/index.md | 17 +++++++++++++++++ .../compute-infrastructure/replicate/index.md | 15 +++++++++++++++ .../container-infrastructure/index.md | 7 ------- .../replicate/replicate.md | 4 ---- developers/integrations/ecosystem.png | Bin 147127 -> 187153 bytes developers/integrations/index.md | 10 +++++----- 9 files changed, 48 insertions(+), 16 deletions(-) rename developers/integrations/cloud-hyperscalers/aws/{aws.md => index.md} (100%) rename developers/integrations/cloud-hyperscalers/google/{google.md => index.md} (100%) create mode 100644 developers/integrations/compute-infrastructure/index.md create mode 100644 developers/integrations/compute-infrastructure/modal/index.md create mode 100644 developers/integrations/compute-infrastructure/replicate/index.md delete mode 100644 developers/integrations/container-infrastructure/index.md delete mode 100644 developers/integrations/container-infrastructure/replicate/replicate.md diff --git a/developers/integrations/cloud-hyperscalers/aws/aws.md b/developers/integrations/cloud-hyperscalers/aws/index.md similarity index 100% rename from developers/integrations/cloud-hyperscalers/aws/aws.md rename to developers/integrations/cloud-hyperscalers/aws/index.md diff --git a/developers/integrations/cloud-hyperscalers/google/google.md b/developers/integrations/cloud-hyperscalers/google/index.md similarity index 100% rename from developers/integrations/cloud-hyperscalers/google/google.md rename to developers/integrations/cloud-hyperscalers/google/index.md diff --git a/developers/integrations/compute-infrastructure/index.md b/developers/integrations/compute-infrastructure/index.md new file mode 100644 index 0000000000..f157731e92 --- /dev/null +++ b/developers/integrations/compute-infrastructure/index.md @@ -0,0 +1,11 @@ +--- +title: Compute Infrastructure +sidebar_position: 2 +image: og/integrations/home.jpg +--- + +Compute Infrastructure solutions provide managed platforms for developing, deploying, and scaling computationally intensive workloads. + +Learn about how Weaviate integrates with these solutions: +* [Modal](/developers/integrations/compute-infrastructure/modal) +* [Replicate](/developers/integrations/compute-infrastructure/replicate) \ No newline at end of file diff --git a/developers/integrations/compute-infrastructure/modal/index.md b/developers/integrations/compute-infrastructure/modal/index.md new file mode 100644 index 0000000000..d255f027d7 --- /dev/null +++ b/developers/integrations/compute-infrastructure/modal/index.md @@ -0,0 +1,17 @@ +--- +title: Modal +sidebar_position: 1 +--- + +Modal provides a serverless platform that enables developers to easily deploy and automatically scale applications with on-demand access to GPUs and a custom high-performance container runtime. + +## Modal and Weaviate +Weaviate integrates with Modal by leveraging its serverless infrastructure for the fast generation of embeddings and generative model calls. The [Weaviate client can be hosted](https://modal.com/docs/examples/vector-analogies-wikipedia#deploy-a-serverless-read-only-weaviate-client-with-modal) on Modal to dynamically scale based on workload demands. + + +## Our Resources +**Hands on Learning**: Content framed to build your technical understanding with end-to-end tutorials. + +| Topic | Description | Resource | +| --- | --- | --- | +| Embed and Search Text at Scale with Modal and Weaviate | Build a full application that discovers analogies between Wikipedia articles by combining serverless infrastructure from Modal with the search and storage capabilities of Weaviate. | [Blog post](/blog/modal-and-weaviate#modal-serverless-infrastructure-for-gpus-and-more), [Notebook](https://github.com/weaviate/recipes/tree/main/integrations/compute-infrastructure/modal), [Modal Guide](https://modal.com/docs/examples/vector-analogies-wikipedia#deploy-a-serverless-read-only-weaviate-client-with-modal)| diff --git a/developers/integrations/compute-infrastructure/replicate/index.md b/developers/integrations/compute-infrastructure/replicate/index.md new file mode 100644 index 0000000000..e8b670e364 --- /dev/null +++ b/developers/integrations/compute-infrastructure/replicate/index.md @@ -0,0 +1,15 @@ +--- +title: Replicate +sidebar_position: 2 +--- + +[add text] + +## Replicate and Weaviate +[add text] + +## Our Resources +**Hands on Learning**: Content framed to build your technical understanding with end-to-end tutorials. + +| Topic | Description | Resource | +| --- | --- | --- | \ No newline at end of file diff --git a/developers/integrations/container-infrastructure/index.md b/developers/integrations/container-infrastructure/index.md deleted file mode 100644 index 33d8e63c67..0000000000 --- a/developers/integrations/container-infrastructure/index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Container Infrastructure -sidebar_position: 2 -image: og/integrations/home.jpg ---- - -Add content here \ No newline at end of file diff --git a/developers/integrations/container-infrastructure/replicate/replicate.md b/developers/integrations/container-infrastructure/replicate/replicate.md deleted file mode 100644 index a17a13f211..0000000000 --- a/developers/integrations/container-infrastructure/replicate/replicate.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: Replicate -sidebar_position: 1 ---- \ No newline at end of file diff --git a/developers/integrations/ecosystem.png b/developers/integrations/ecosystem.png index ea364e35caf858fe694a489f2d515775535326ab..763d11c71a6d26b8467673ccb6ad14f3c802b6b0 100644 GIT binary patch literal 187153 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%0AR9rg9|T${7O$NezX5>uiYh;U##0X;inB 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

*!y8=`O0>y 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 diff --git a/developers/integrations/index.md b/developers/integrations/index.md index a7c7b6d7af..460724af0e 100644 --- a/developers/integrations/index.md +++ b/developers/integrations/index.md @@ -19,8 +19,8 @@ All the notebooks and code examples are on [Weaviate Recipes](https://github.com The ecosystem is divided into these categories: * **Cloud Hyperscalers** - Large-scale computing and storage -* **Container Infrastructure** - Run and scale containerized applications -* **Data Pipeline** - Data ingestion and web scraping +* **Compute Infrastructure** - Run and scale containerized applications +* **Data Platforms** - Data ingestion and web scraping * **LLM Frameworks** - Build generative AI applications * **Observability and Evaluation** - Monitor and analyze generative AI workflows @@ -31,7 +31,7 @@ The ecosystem is divided into these categories: | Company Category | Companies | |------------------|-----------| | Cloud Hyperscalers | [Google](/developers/integrations/cloud-hyperscalers/google), [AWS](/developers/integrations/cloud-hyperscalers/aws), Azure| -| Container Infrastructure | Modal, Replicate | -| Data Pipeline | Spark, Unstructured, Firecrawl | +| Compute Infrastructure | [Modal](/developers/integrations/compute-infrastructure/modal), [Replicate](/developers/integrations/compute-infrastructure/replicate) | +| Data Platforms | Confluent, 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 +| Observability and Evaluation | Arize, Langtrace, LangWatch, Nomic, Ragas, Weights & Biases | \ No newline at end of file From 9306299fcb9f24eb6fd0052c8217bd9c4aaba33b Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Thu, 8 Aug 2024 18:53:47 -0400 Subject: [PATCH 08/35] Add Replicate --- .../integrations/compute-infrastructure/modal/index.md | 2 +- .../integrations/compute-infrastructure/replicate/index.md | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/developers/integrations/compute-infrastructure/modal/index.md b/developers/integrations/compute-infrastructure/modal/index.md index d255f027d7..507f64fc44 100644 --- a/developers/integrations/compute-infrastructure/modal/index.md +++ b/developers/integrations/compute-infrastructure/modal/index.md @@ -3,7 +3,7 @@ title: Modal sidebar_position: 1 --- -Modal provides a serverless platform that enables developers to easily deploy and automatically scale applications with on-demand access to GPUs and a custom high-performance container runtime. +[Modal](https://modal.com/) provides a serverless platform that enables developers to easily deploy and automatically scale applications with on-demand access to GPUs and a custom high-performance container runtime. ## Modal and Weaviate Weaviate integrates with Modal by leveraging its serverless infrastructure for the fast generation of embeddings and generative model calls. The [Weaviate client can be hosted](https://modal.com/docs/examples/vector-analogies-wikipedia#deploy-a-serverless-read-only-weaviate-client-with-modal) on Modal to dynamically scale based on workload demands. diff --git a/developers/integrations/compute-infrastructure/replicate/index.md b/developers/integrations/compute-infrastructure/replicate/index.md index e8b670e364..e1fc885e0f 100644 --- a/developers/integrations/compute-infrastructure/replicate/index.md +++ b/developers/integrations/compute-infrastructure/replicate/index.md @@ -3,13 +3,14 @@ title: Replicate sidebar_position: 2 --- -[add text] +[Replicate](https://replicate.com/) is a platform that allows users to run machine learning models through a cloud API. They host a plethora of open-source models, including embedding and language models, which enables users to run and fine-tune them. ## Replicate and Weaviate -[add text] +Weaviate does not currently have a direct integration for Replicate. To use models on Replicate, we recommend you use [LlamaIndex](https://docs.llamaindex.ai/en/stable/api_reference/llms/replicate/) or [LangChain](https://python.langchain.com/v0.2/docs/integrations/llms/replicate/) and connect it to your Weaviate vector store. ## Our Resources **Hands on Learning**: Content framed to build your technical understanding with end-to-end tutorials. | Topic | Description | Resource | -| --- | --- | --- | \ No newline at end of file +| --- | --- | --- | +Run Llama 2 on Replicate | Build a LlamaIndex query engine using Replicate, Weaviate, and Llama 2 as the generative model. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/compute-infrastructure/replicate-llama2/notebook.ipynb) | \ No newline at end of file From f0ebc4b852dd93ec108eef3b54b6702ee3909b33 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Fri, 9 Aug 2024 12:17:52 -0400 Subject: [PATCH 09/35] Factor in Dave's feedback --- .../integrations/cloud-hyperscalers/aws/index.md | 2 +- .../integrations/cloud-hyperscalers/google/index.md | 2 +- .../integrations/compute-infrastructure/index.md | 2 +- .../compute-infrastructure/modal/index.md | 11 +++++++---- .../compute-infrastructure/replicate/index.md | 6 +++--- developers/integrations/llm-frameworks/dspy/dspy.md | 4 ++-- 6 files changed, 15 insertions(+), 12 deletions(-) diff --git a/developers/integrations/cloud-hyperscalers/aws/index.md b/developers/integrations/cloud-hyperscalers/aws/index.md index 36940519f9..450b466c0d 100644 --- a/developers/integrations/cloud-hyperscalers/aws/index.md +++ b/developers/integrations/cloud-hyperscalers/aws/index.md @@ -12,7 +12,7 @@ Weaviate integrates with [AWS](https://aws.amazon.com/) infrastructure and servi * [Run embedding and generative models on SageMaker and Bedrock](/developers/weaviate/model-providers/aws) ## Our Resources -**Hands on Learning**: Content framed to build your technical understanding with end-to-end tutorials. +**Hands on Learning**: Build your technical understanding with end-to-end tutorials. | Topic | Description | Resource | | --- | --- | --- | diff --git a/developers/integrations/cloud-hyperscalers/google/index.md b/developers/integrations/cloud-hyperscalers/google/index.md index 9021837e09..3730b3d138 100644 --- a/developers/integrations/cloud-hyperscalers/google/index.md +++ b/developers/integrations/cloud-hyperscalers/google/index.md @@ -13,7 +13,7 @@ Weaviate integrates with GCP infrastructure and services like Google [AI Studio] ## Our Resources -**Hands on Learning**: Content framed to build your technical understanding with end-to-end tutorials. +**Hands on Learning**: Build your technical understanding with end-to-end tutorials. | Topic | Description | Resource | | --- | --- | --- | diff --git a/developers/integrations/compute-infrastructure/index.md b/developers/integrations/compute-infrastructure/index.md index f157731e92..bacd732490 100644 --- a/developers/integrations/compute-infrastructure/index.md +++ b/developers/integrations/compute-infrastructure/index.md @@ -4,7 +4,7 @@ sidebar_position: 2 image: og/integrations/home.jpg --- -Compute Infrastructure solutions provide managed platforms for developing, deploying, and scaling computationally intensive workloads. +Compute Infrastructure solutions provide managed platforms for computationally intensive workloads. Use these platforms to develop, deploy, and scale your application. Learn about how Weaviate integrates with these solutions: * [Modal](/developers/integrations/compute-infrastructure/modal) diff --git a/developers/integrations/compute-infrastructure/modal/index.md b/developers/integrations/compute-infrastructure/modal/index.md index 507f64fc44..ee9fde516a 100644 --- a/developers/integrations/compute-infrastructure/modal/index.md +++ b/developers/integrations/compute-infrastructure/modal/index.md @@ -3,15 +3,18 @@ title: Modal sidebar_position: 1 --- -[Modal](https://modal.com/) provides a serverless platform that enables developers to easily deploy and automatically scale applications with on-demand access to GPUs and a custom high-performance container runtime. +[Modal](https://modal.com/) provides a serverless platform that has on-demand access to GPUs and a custom high-performance container runtime. Use Modal to easily deploy and automatically scale high-performance applications. ## Modal and Weaviate -Weaviate integrates with Modal by leveraging its serverless infrastructure for the fast generation of embeddings and generative model calls. The [Weaviate client can be hosted](https://modal.com/docs/examples/vector-analogies-wikipedia#deploy-a-serverless-read-only-weaviate-client-with-modal) on Modal to dynamically scale based on workload demands. +Weaviate leverages Modal's serverless infrastructure for fast embedding generation and for fast generative model calls. + +To dynamically scale your application based on workload demands, [host the Weaviate client](https://modal.com/docs/examples/vector-analogies-wikipedia#deploy-a-serverless-read-only-weaviate-client-with-modal) on Modal. + ## Our Resources -**Hands on Learning**: Content framed to build your technical understanding with end-to-end tutorials. +**Hands on Learning**: Build your technical understanding with end-to-end tutorials. | Topic | Description | Resource | | --- | --- | --- | -| Embed and Search Text at Scale with Modal and Weaviate | Build a full application that discovers analogies between Wikipedia articles by combining serverless infrastructure from Modal with the search and storage capabilities of Weaviate. | [Blog post](/blog/modal-and-weaviate#modal-serverless-infrastructure-for-gpus-and-more), [Notebook](https://github.com/weaviate/recipes/tree/main/integrations/compute-infrastructure/modal), [Modal Guide](https://modal.com/docs/examples/vector-analogies-wikipedia#deploy-a-serverless-read-only-weaviate-client-with-modal)| +| Embed and Search Text at Scale with Modal and Weaviate | Build a full application that discovers analogies between Wikipedia articles. Combine serverless infrastructure from Modal with the search and storage capabilities of Weaviate. | [Blog post](/blog/modal-and-weaviate#modal-serverless-infrastructure-for-gpus-and-more), [Notebook](https://github.com/weaviate/recipes/tree/main/integrations/compute-infrastructure/modal), [Modal Guide](https://modal.com/docs/examples/vector-analogies-wikipedia#deploy-a-serverless-read-only-weaviate-client-with-modal)| diff --git a/developers/integrations/compute-infrastructure/replicate/index.md b/developers/integrations/compute-infrastructure/replicate/index.md index e1fc885e0f..a28821a1f7 100644 --- a/developers/integrations/compute-infrastructure/replicate/index.md +++ b/developers/integrations/compute-infrastructure/replicate/index.md @@ -3,13 +3,13 @@ title: Replicate sidebar_position: 2 --- -[Replicate](https://replicate.com/) is a platform that allows users to run machine learning models through a cloud API. They host a plethora of open-source models, including embedding and language models, which enables users to run and fine-tune them. +[Replicate](https://replicate.com/) is a platform that allows users to run machine learning models through a cloud API. They host many open-source models, including embedding and language models. Users can run or fine-tune the models to meet their application needs. ## Replicate and Weaviate -Weaviate does not currently have a direct integration for Replicate. To use models on Replicate, we recommend you use [LlamaIndex](https://docs.llamaindex.ai/en/stable/api_reference/llms/replicate/) or [LangChain](https://python.langchain.com/v0.2/docs/integrations/llms/replicate/) and connect it to your Weaviate vector store. +To use models on Replicate, you need to use [LlamaIndex](https://docs.llamaindex.ai/en/stable/api_reference/llms/replicate/) or [LangChain](https://python.langchain.com/v0.2/docs/integrations/llms/replicate/) and connect it to your Weaviate vector store. ## Our Resources -**Hands on Learning**: Content framed to build your technical understanding with end-to-end tutorials. +**Hands on Learning**: Build your technical understanding with end-to-end tutorials. | Topic | Description | Resource | | --- | --- | --- | diff --git a/developers/integrations/llm-frameworks/dspy/dspy.md b/developers/integrations/llm-frameworks/dspy/dspy.md index 79a2d40ff4..b75dc61371 100644 --- a/developers/integrations/llm-frameworks/dspy/dspy.md +++ b/developers/integrations/llm-frameworks/dspy/dspy.md @@ -24,9 +24,9 @@ retriever_module = WeaviateRM("WeaviateBlogChunk", # collection name Here are a few resources on using DSPy from the Weaviate team! The resources are broken into two categories: -1. [**Hands on Learning**](#hands-on-learning): Content framed to build your technical understanding with end-to-end tutorials. +1. [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. -2. [**Read and Listen**](#read-and-listen): Content designed to help develop your conceptual understanding of these technologies. +2. [**Read and Listen**](#read-and-listen): Develop your conceptual understanding of these technologies. ### Hands on Learning From bee8a5c11652538a7a52f9485c80169ad3dde01e Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Tue, 27 Aug 2024 15:15:04 -0400 Subject: [PATCH 10/35] Merge remote-tracking branch 'origin/main' into integrations-docs --- .../integrations/data-pipeline/firecrawl/index.md | 12 ++++++++++-- developers/integrations/data-pipeline/index.md | 10 ++++++++-- .../integrations/data-pipeline/spark/index.md | 15 ++++++++++++--- .../data-pipeline/unstructured/index.md | 14 +++++++++++--- .../data-platforms/confluent-cloud/index.md | 15 +++++++++++++++ developers/integrations/index.md | 2 +- 6 files changed, 57 insertions(+), 11 deletions(-) create mode 100644 developers/integrations/data-platforms/confluent-cloud/index.md diff --git a/developers/integrations/data-pipeline/firecrawl/index.md b/developers/integrations/data-pipeline/firecrawl/index.md index baf972a186..6e56fc0f6e 100644 --- a/developers/integrations/data-pipeline/firecrawl/index.md +++ b/developers/integrations/data-pipeline/firecrawl/index.md @@ -1,7 +1,15 @@ --- title: Firecrawl sidebar_position: 2 -image: og/integrations/home.jpg --- -Home page for Firecrawl \ No newline at end of file +[content] + +## Firecrawl and Weaviate +[content] + +## Our Resources +**Hands on Learning**: Build your technical understanding with end-to-end tutorials. + +| Topic | Description | Resource | +| --- | --- | --- | \ No newline at end of file diff --git a/developers/integrations/data-pipeline/index.md b/developers/integrations/data-pipeline/index.md index 8943e98eb1..ff236a7f2f 100644 --- a/developers/integrations/data-pipeline/index.md +++ b/developers/integrations/data-pipeline/index.md @@ -1,7 +1,13 @@ --- -title: Data Pipeline +title: Data Platforms sidebar_position: 3 image: og/integrations/home.jpg --- -Home page for data pipeline \ No newline at end of file +Data platforms + +Learn about how Weaviate integrates with these data platforms: +* [Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud) +* [Firecrawl](/developers/integrations/data-platforms/firecrawl) +* [Spark](/developers/integrations/data-platforms/spark) +* [Unstructured](/developers/integrations/data-platforms/unstructured) diff --git a/developers/integrations/data-pipeline/spark/index.md b/developers/integrations/data-pipeline/spark/index.md index 728065d327..b6ee6105a2 100644 --- a/developers/integrations/data-pipeline/spark/index.md +++ b/developers/integrations/data-pipeline/spark/index.md @@ -1,7 +1,16 @@ --- title: Spark -sidebar_position: 1 -image: og/integrations/home.jpg +sidebar_position: 3 --- -Home page for Spark \ No newline at end of file +Home page for Spark + +## Spark and Weaviate +[content] + + +## Our Resources +**Hands on Learning**: Build your technical understanding with end-to-end tutorials. + +| Topic | Description | Resource | +| --- | --- | --- | \ No newline at end of file diff --git a/developers/integrations/data-pipeline/unstructured/index.md b/developers/integrations/data-pipeline/unstructured/index.md index e976b9bf96..20bf614e19 100644 --- a/developers/integrations/data-pipeline/unstructured/index.md +++ b/developers/integrations/data-pipeline/unstructured/index.md @@ -1,7 +1,15 @@ --- title: Unstructured -sidebar_position: 3 -image: og/integrations/home.jpg +sidebar_position: 4 --- -Home page for data pipeline \ No newline at end of file +[content] + +## Unstructured and Weaviate +[content] + +## Our Resources +**Hands on Learning**: Build your technical understanding with end-to-end tutorials. + +| Topic | Description | Resource | +| --- | --- | --- | \ No newline at end of file diff --git a/developers/integrations/data-platforms/confluent-cloud/index.md b/developers/integrations/data-platforms/confluent-cloud/index.md new file mode 100644 index 0000000000..00cc5635cb --- /dev/null +++ b/developers/integrations/data-platforms/confluent-cloud/index.md @@ -0,0 +1,15 @@ +--- +title: Confluent Cloud +sidebar_position: 1 +--- +[content] + +## Confluent Cloud and Weaviate +[content] + + +## Our Resources +**Hands on Learning**: Build your technical understanding with end-to-end tutorials. + +| Topic | Description | Resource | +| --- | --- | --- | \ No newline at end of file diff --git a/developers/integrations/index.md b/developers/integrations/index.md index 460724af0e..e59e46a715 100644 --- a/developers/integrations/index.md +++ b/developers/integrations/index.md @@ -32,6 +32,6 @@ The ecosystem is divided into these categories: |------------------|-----------| | Cloud Hyperscalers | [Google](/developers/integrations/cloud-hyperscalers/google), [AWS](/developers/integrations/cloud-hyperscalers/aws), Azure| | Compute Infrastructure | [Modal](/developers/integrations/compute-infrastructure/modal), [Replicate](/developers/integrations/compute-infrastructure/replicate) | -| Data Platforms | Confluent, Spark, Unstructured, Firecrawl | +| Data Platforms |[Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud), [Firecrawl](/developers/integrations/data-platforms/firecrawl), [Spark](/developers/integrations/data-platforms/spark), [Unstructured](/developers/integrations/data-platforms/unstructured) | | LLM Frameworks | DSPy, LangChain, LlamaIndex, Semantic Kernel | | Observability and Evaluation | Arize, Langtrace, LangWatch, Nomic, Ragas, Weights & Biases | \ No newline at end of file From 604bed6df4c4a681e884341c984db6ee2f2ca7a5 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 14:46:54 -0400 Subject: [PATCH 11/35] Add Data Platforms section --- .../integrations/data-pipeline/index.md | 7 ---- .../data-platforms/composio/index.md | 5 +++ .../data-platforms/confluent-cloud/index.md | 32 +++++++++++++++++++ .../firecrawl/index.md | 2 +- .../integrations/data-platforms/index.md | 14 ++++++++ .../spark/index.md | 2 +- .../unstructured/index.md | 2 +- developers/integrations/index.md | 2 +- 8 files changed, 55 insertions(+), 11 deletions(-) delete mode 100644 developers/integrations/data-pipeline/index.md create mode 100644 developers/integrations/data-platforms/composio/index.md create mode 100644 developers/integrations/data-platforms/confluent-cloud/index.md rename developers/integrations/{data-pipeline => data-platforms}/firecrawl/index.md (80%) create mode 100644 developers/integrations/data-platforms/index.md rename developers/integrations/{data-pipeline => data-platforms}/spark/index.md (78%) rename developers/integrations/{data-pipeline => data-platforms}/unstructured/index.md (81%) diff --git a/developers/integrations/data-pipeline/index.md b/developers/integrations/data-pipeline/index.md deleted file mode 100644 index 8943e98eb1..0000000000 --- a/developers/integrations/data-pipeline/index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Data Pipeline -sidebar_position: 3 -image: og/integrations/home.jpg ---- - -Home page for data pipeline \ No newline at end of file diff --git a/developers/integrations/data-platforms/composio/index.md b/developers/integrations/data-platforms/composio/index.md new file mode 100644 index 0000000000..faf7c200f5 --- /dev/null +++ b/developers/integrations/data-platforms/composio/index.md @@ -0,0 +1,5 @@ +--- +title: Composio +sidebar_position: 1 +image: og/integrations/home.jpg +--- \ No newline at end of file diff --git a/developers/integrations/data-platforms/confluent-cloud/index.md b/developers/integrations/data-platforms/confluent-cloud/index.md new file mode 100644 index 0000000000..fa89145f52 --- /dev/null +++ b/developers/integrations/data-platforms/confluent-cloud/index.md @@ -0,0 +1,32 @@ +--- +title: Confluent Cloud +sidebar_position: 2 +image: og/integrations/home.jpg +--- + +Confluent Cloud is a fully managed Apache Kafka service that offers real-time data streaming with seamless integration across major cloud providers, high performance, and robust security features. Learn more at [Confluent Cloud](https://www.confluent.io/confluent-cloud/). + +## Confluent and Weaviate +You can stream data from Confluent Cloud to Weaviate using the [Weaviate Confluent Connector](https://github.com/weaviate/confluent-connector). For setup and usage details, refer to the connector's [README](https://github.com/weaviate/confluent-connector/blob/main/README.md). + + +## Our Resources +The resources are broken into two categories: +1. [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +2. [**Read and Listen**](#read-and-listen): Develop your conceptual understanding of these technologies. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| PySpark Notebook | Learn how to use PySpark | [Notebook](https://github.com/weaviate/confluent-connector/blob/main/notebooks/01_demo_pyspark.ipynb) | +| Confluent-Weaviate Connector with Embedded | This notebook shows you how to use the confluent-weaviate connector with Weaviate Embedded. | [Notebook](https://github.com/weaviate/confluent-connector/blob/main/notebooks/02_demo_confluent_weaviate.ipynb) | +| Confluent-Weaviate Connector with Weaviate Cloud | This notebook shows you how to use the confluent-weaviate connector with Weaviate Cloud. | [Notebook](https://github.com/weaviate/confluent-connector/blob/main/notebooks/03_demo_confluent_wcs.ipynb) | +| Confluent-Weaviate Connector with Weaviate Cloud and Databricks | Learn how to integrate the confluent-weaviate connector with Weaviate Cloud and Databricks. | [Notebook](https://github.com/weaviate/confluent-connector/blob/main/notebooks/04_demo_confluent_databricks.ipynb) | + + +### Read and Listen +| Topic | Description | Resource | +| --- | --- | --- | +| Make Real-Time AI a Reality with Weaviate + Confluent | Learn how to build an application using Weaviate and Confluent. | [Blog](/blog/confluent-and-weaviate) \ No newline at end of file diff --git a/developers/integrations/data-pipeline/firecrawl/index.md b/developers/integrations/data-platforms/firecrawl/index.md similarity index 80% rename from developers/integrations/data-pipeline/firecrawl/index.md rename to developers/integrations/data-platforms/firecrawl/index.md index baf972a186..3b4e8184ae 100644 --- a/developers/integrations/data-pipeline/firecrawl/index.md +++ b/developers/integrations/data-platforms/firecrawl/index.md @@ -1,6 +1,6 @@ --- title: Firecrawl -sidebar_position: 2 +sidebar_position: 5 image: og/integrations/home.jpg --- diff --git a/developers/integrations/data-platforms/index.md b/developers/integrations/data-platforms/index.md new file mode 100644 index 0000000000..7d2fe31915 --- /dev/null +++ b/developers/integrations/data-platforms/index.md @@ -0,0 +1,14 @@ +--- +title: Data Platforms +sidebar_position: 3 +image: og/integrations/home.jpg +--- + +Data Platforms offer robust solutions for managing, processing, and analyzing large volumes of data. These platforms provide tools and services that facilitate seamless data ingestion directly into Weaviate. + +Learn about how Weaviate integrates with these solutions: +* [Composio](/developers/integrations/data-platforms/composio) +* [Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud) +* [Spark](/developers/integrations/data-platforms/spark) +* [Unstructured](/developers/integrations/data-platforms/unstructured) +* [Firecrawl](/developers/integrations/data-platforms/firecrawl/) \ No newline at end of file diff --git a/developers/integrations/data-pipeline/spark/index.md b/developers/integrations/data-platforms/spark/index.md similarity index 78% rename from developers/integrations/data-pipeline/spark/index.md rename to developers/integrations/data-platforms/spark/index.md index 728065d327..63061f5153 100644 --- a/developers/integrations/data-pipeline/spark/index.md +++ b/developers/integrations/data-platforms/spark/index.md @@ -1,6 +1,6 @@ --- title: Spark -sidebar_position: 1 +sidebar_position: 3 image: og/integrations/home.jpg --- diff --git a/developers/integrations/data-pipeline/unstructured/index.md b/developers/integrations/data-platforms/unstructured/index.md similarity index 81% rename from developers/integrations/data-pipeline/unstructured/index.md rename to developers/integrations/data-platforms/unstructured/index.md index e976b9bf96..e2335df50c 100644 --- a/developers/integrations/data-pipeline/unstructured/index.md +++ b/developers/integrations/data-platforms/unstructured/index.md @@ -1,6 +1,6 @@ --- title: Unstructured -sidebar_position: 3 +sidebar_position: 4 image: og/integrations/home.jpg --- diff --git a/developers/integrations/index.md b/developers/integrations/index.md index 460724af0e..bc236eeb8e 100644 --- a/developers/integrations/index.md +++ b/developers/integrations/index.md @@ -32,6 +32,6 @@ The ecosystem is divided into these categories: |------------------|-----------| | Cloud Hyperscalers | [Google](/developers/integrations/cloud-hyperscalers/google), [AWS](/developers/integrations/cloud-hyperscalers/aws), Azure| | Compute Infrastructure | [Modal](/developers/integrations/compute-infrastructure/modal), [Replicate](/developers/integrations/compute-infrastructure/replicate) | -| Data Platforms | Confluent, Spark, Unstructured, Firecrawl | +| Data Platforms | Composio, Confluent Cloud, Spark, Unstructured, Firecrawl | | LLM Frameworks | DSPy, LangChain, LlamaIndex, Semantic Kernel | | Observability and Evaluation | Arize, Langtrace, LangWatch, Nomic, Ragas, Weights & Biases | \ No newline at end of file From be36871d6b1b594fb7fa9749bb3d4cb06d80ee3d Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:26:37 -0400 Subject: [PATCH 12/35] Add Spark page --- .../data-platforms/spark/index.md | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/developers/integrations/data-platforms/spark/index.md b/developers/integrations/data-platforms/spark/index.md index 63061f5153..5d90cacc58 100644 --- a/developers/integrations/data-platforms/spark/index.md +++ b/developers/integrations/data-platforms/spark/index.md @@ -4,4 +4,27 @@ sidebar_position: 3 image: og/integrations/home.jpg --- -Home page for Spark \ No newline at end of file +[Apache Spark](https://spark.apache.org/docs/latest/api/python/index.html) (or the Python API, PySpark) is an open-source data processing framework used for real-time, large-scale data processing. + +## Spark and Weaviate +The Spark connector enables you to easily ingest data from Spark data structures into Weaviate. + +You can learn more about the Weaviate connector for Spark in [this repository](https://github.com/weaviate/spark-connector). + +## Our Resources +The resources are broken into two categories: +1. [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +2. [**Read and Listen**](#read-and-listen): Develop your conceptual understanding of these technologies. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| Weaviate Tutorial | Learn how to ingest data into Weaviate with Spark | [Tutorial](/developers/weaviate/tutorials/spark-connector) +| Using the Spark Connector for Weaviate | Learn how to take data from a Spark dataframe and feed it into Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/data-platforms/spark/spark-connector.ipynb) | + +### Read and Listen +| Topic | Description | Resource | +| The Sphere Dataset in Weaviate | Learn how to import and query the Sphere dataset in Weaviate. | [Blog](/blog/sphere-dataset-in-weaviate) | +| The Details Behind the Sphere Dataset in Weaviate | The details on how we ingested ~1 billion article snippets into Weaviate | [Blog](/blog/details-behind-the-sphere-dataset-in-weaviate) | \ No newline at end of file From fb5ce7992ebca680e39c6c72355523e4b9a8ea92 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:27:10 -0400 Subject: [PATCH 13/35] update table --- developers/integrations/data-platforms/spark/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/developers/integrations/data-platforms/spark/index.md b/developers/integrations/data-platforms/spark/index.md index 5d90cacc58..e9dab5dd66 100644 --- a/developers/integrations/data-platforms/spark/index.md +++ b/developers/integrations/data-platforms/spark/index.md @@ -26,5 +26,6 @@ The resources are broken into two categories: ### Read and Listen | Topic | Description | Resource | +| --- | --- | --- | | The Sphere Dataset in Weaviate | Learn how to import and query the Sphere dataset in Weaviate. | [Blog](/blog/sphere-dataset-in-weaviate) | | The Details Behind the Sphere Dataset in Weaviate | The details on how we ingested ~1 billion article snippets into Weaviate | [Blog](/blog/details-behind-the-sphere-dataset-in-weaviate) | \ No newline at end of file From f19a1b48ce3a4dcd7f46ea4fcdb4a43646c3763a Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 17:20:42 -0400 Subject: [PATCH 14/35] Add Unstructured --- .../data-platforms/spark/index.md | 4 +-- .../data-platforms/unstructured/index.md | 27 ++++++++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/developers/integrations/data-platforms/spark/index.md b/developers/integrations/data-platforms/spark/index.md index e9dab5dd66..18b094a876 100644 --- a/developers/integrations/data-platforms/spark/index.md +++ b/developers/integrations/data-platforms/spark/index.md @@ -21,11 +21,11 @@ The resources are broken into two categories: | Topic | Description | Resource | | --- | --- | --- | -| Weaviate Tutorial | Learn how to ingest data into Weaviate with Spark | [Tutorial](/developers/weaviate/tutorials/spark-connector) +| Weaviate Tutorial | Learn how to ingest data into Weaviate with Spark. | [Tutorial](/developers/weaviate/tutorials/spark-connector) | Using the Spark Connector for Weaviate | Learn how to take data from a Spark dataframe and feed it into Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/data-platforms/spark/spark-connector.ipynb) | ### Read and Listen | Topic | Description | Resource | | --- | --- | --- | | The Sphere Dataset in Weaviate | Learn how to import and query the Sphere dataset in Weaviate. | [Blog](/blog/sphere-dataset-in-weaviate) | -| The Details Behind the Sphere Dataset in Weaviate | The details on how we ingested ~1 billion article snippets into Weaviate | [Blog](/blog/details-behind-the-sphere-dataset-in-weaviate) | \ No newline at end of file +| The Details Behind the Sphere Dataset in Weaviate | The details on how we ingested ~1 billion article snippets into Weaviate. | [Blog](/blog/details-behind-the-sphere-dataset-in-weaviate) | \ No newline at end of file diff --git a/developers/integrations/data-platforms/unstructured/index.md b/developers/integrations/data-platforms/unstructured/index.md index e2335df50c..e7db566288 100644 --- a/developers/integrations/data-platforms/unstructured/index.md +++ b/developers/integrations/data-platforms/unstructured/index.md @@ -4,4 +4,29 @@ sidebar_position: 4 image: og/integrations/home.jpg --- -Home page for data pipeline \ No newline at end of file +[Unstructured](https://unstructured.io/) offers a platform and tools for ingesting and processing unstructured data for building retrieval augmented generation (RAG) applications. + +Unstructured has two offerings: +1. [Unstructured Platform](https://docs.unstructured.io/platform/overview): No-code user interface 3 +2. [Serverless API](https://docs.unstructured.io/api-reference/api-services/overview): Run scripts or code to call the Unstructured Ingest CLI + +## Unstructured and Weaviate +You can ingest and process data from a variety of sources into your Weaviate cluster. Weaviate is a destination connector in the [Platform](https://docs.unstructured.io/platform/platform-destination-connectors/weaviate) and [API](https://docs.unstructured.io/api-reference/ingest/destination-connector/weaviate). + + +## Our Resources +The resources are broken into two categories: +1. [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +2. [**Read and Listen**](#read-and-listen): Develop your conceptual understanding of these technologies. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| Ingest Data from S3 into Weaviate | Learn how to use Unstructured's API to grab data from an S3 bucket and load it into Weaviate | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/data-platforms/unstructured/unstructured_weaviate.ipynb) + +### Read and Listen +| Topic | Description | Resource | +| --- | --- | --- | +| Ingesting PDFs into Weaviate | Learn how to load and transform PDF documents into Weaviate. | [Blog](/blog/ingesting-pdfs-into-weaviate) | \ No newline at end of file From 1e5cc628a2180cb6e64113ed90597ab2a05b980d Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 17:48:35 -0400 Subject: [PATCH 15/35] Add Firecrawl --- .../integrations/data-platforms/firecrawl/index.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/developers/integrations/data-platforms/firecrawl/index.md b/developers/integrations/data-platforms/firecrawl/index.md index 3b4e8184ae..447e743db2 100644 --- a/developers/integrations/data-platforms/firecrawl/index.md +++ b/developers/integrations/data-platforms/firecrawl/index.md @@ -4,4 +4,16 @@ sidebar_position: 5 image: og/integrations/home.jpg --- -Home page for Firecrawl \ No newline at end of file +[Firecrawl](https://www.firecrawl.dev/) is an AI first web scraping tool that allows you to easily crawl and extract clean, structured data from websites. It is an API service that converts a URL into clean markdown or structured data. + +## Firecrawl and Weaviate +Firecrawl handles the complexities of web scraping like proxies, caching, rate limits, and dynamic content, delivering markdown or JSON output that is ready to be ingested into vector databases like Weaviate. + +## Our Resources +[**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| Firecrawl to Weaviate | This notebook will show you how to scrape webpages using Firecrawl and load it into Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/data-platforms/web-search/firecrawl/firecrawl-to-weaviate.ipynb) \ No newline at end of file From f1eac1a53f7080e37d97ade550f656ec6251e2b7 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 18:14:07 -0400 Subject: [PATCH 16/35] Add Composio --- .../data-platforms/composio/index.md | 5 ---- .../data-platforms/confluent-cloud/index.md | 2 +- .../data-platforms/context-data/index.md | 5 ++++ .../data-platforms/firecrawl/index.md | 2 +- .../integrations/data-platforms/index.md | 1 - .../data-platforms/spark/index.md | 2 +- .../data-platforms/unstructured/index.md | 4 +-- .../llm-frameworks/composio/index.md | 26 +++++++++++++++++++ 8 files changed, 36 insertions(+), 11 deletions(-) delete mode 100644 developers/integrations/data-platforms/composio/index.md create mode 100644 developers/integrations/data-platforms/context-data/index.md create mode 100644 developers/integrations/llm-frameworks/composio/index.md diff --git a/developers/integrations/data-platforms/composio/index.md b/developers/integrations/data-platforms/composio/index.md deleted file mode 100644 index faf7c200f5..0000000000 --- a/developers/integrations/data-platforms/composio/index.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Composio -sidebar_position: 1 -image: og/integrations/home.jpg ---- \ No newline at end of file diff --git a/developers/integrations/data-platforms/confluent-cloud/index.md b/developers/integrations/data-platforms/confluent-cloud/index.md index fa89145f52..ae5456b363 100644 --- a/developers/integrations/data-platforms/confluent-cloud/index.md +++ b/developers/integrations/data-platforms/confluent-cloud/index.md @@ -1,6 +1,6 @@ --- title: Confluent Cloud -sidebar_position: 2 +sidebar_position: 1 image: og/integrations/home.jpg --- diff --git a/developers/integrations/data-platforms/context-data/index.md b/developers/integrations/data-platforms/context-data/index.md new file mode 100644 index 0000000000..ff0f6a7fde --- /dev/null +++ b/developers/integrations/data-platforms/context-data/index.md @@ -0,0 +1,5 @@ +--- +title: Context Data +sidebar_position: 2 +image: og/integrations/home.jpg +--- \ No newline at end of file diff --git a/developers/integrations/data-platforms/firecrawl/index.md b/developers/integrations/data-platforms/firecrawl/index.md index 447e743db2..7454a1a396 100644 --- a/developers/integrations/data-platforms/firecrawl/index.md +++ b/developers/integrations/data-platforms/firecrawl/index.md @@ -1,6 +1,6 @@ --- title: Firecrawl -sidebar_position: 5 +sidebar_position: 3 image: og/integrations/home.jpg --- diff --git a/developers/integrations/data-platforms/index.md b/developers/integrations/data-platforms/index.md index 7d2fe31915..a6ad4681dc 100644 --- a/developers/integrations/data-platforms/index.md +++ b/developers/integrations/data-platforms/index.md @@ -7,7 +7,6 @@ image: og/integrations/home.jpg Data Platforms offer robust solutions for managing, processing, and analyzing large volumes of data. These platforms provide tools and services that facilitate seamless data ingestion directly into Weaviate. Learn about how Weaviate integrates with these solutions: -* [Composio](/developers/integrations/data-platforms/composio) * [Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud) * [Spark](/developers/integrations/data-platforms/spark) * [Unstructured](/developers/integrations/data-platforms/unstructured) diff --git a/developers/integrations/data-platforms/spark/index.md b/developers/integrations/data-platforms/spark/index.md index 18b094a876..4ff9c2327a 100644 --- a/developers/integrations/data-platforms/spark/index.md +++ b/developers/integrations/data-platforms/spark/index.md @@ -1,6 +1,6 @@ --- title: Spark -sidebar_position: 3 +sidebar_position: 4 image: og/integrations/home.jpg --- diff --git a/developers/integrations/data-platforms/unstructured/index.md b/developers/integrations/data-platforms/unstructured/index.md index e7db566288..0931aa1f0d 100644 --- a/developers/integrations/data-platforms/unstructured/index.md +++ b/developers/integrations/data-platforms/unstructured/index.md @@ -1,13 +1,13 @@ --- title: Unstructured -sidebar_position: 4 +sidebar_position: 5 image: og/integrations/home.jpg --- [Unstructured](https://unstructured.io/) offers a platform and tools for ingesting and processing unstructured data for building retrieval augmented generation (RAG) applications. Unstructured has two offerings: -1. [Unstructured Platform](https://docs.unstructured.io/platform/overview): No-code user interface 3 +1. [Unstructured Platform](https://docs.unstructured.io/platform/overview): No-code user interface 2. [Serverless API](https://docs.unstructured.io/api-reference/api-services/overview): Run scripts or code to call the Unstructured Ingest CLI ## Unstructured and Weaviate diff --git a/developers/integrations/llm-frameworks/composio/index.md b/developers/integrations/llm-frameworks/composio/index.md new file mode 100644 index 0000000000..5806468901 --- /dev/null +++ b/developers/integrations/llm-frameworks/composio/index.md @@ -0,0 +1,26 @@ +--- +title: Composio +sidebar_position: 1 +image: og/integrations/home.jpg +--- + +[Composio](https://docs.composio.dev/introduction/intro/overview) uses function calling for managing and integrating tools with language models and AI agents. + +## Composio and Weaviate +With Weaviate's retrieval, you can make the agent more personalized and context-aware. + +The integration is supported through our LangChain vector store. You need to have a running Weaviate instance and create the vector store with: +```python +WeaviateVectorStore.from_documents( ) +``` + +You can learn more about how to create a vector store [here](https://python.langchain.com/v0.2/docs/integrations/vectorstores/weaviate/#step-1-data-import). + +## Our Resources +[**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| Gmail Agent | Integrate Composio's Gmail tool with Weaviate to create an agent that will respond to new messages. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/function-calling/composio/agent.ipynb) | \ No newline at end of file From c68901d103e97ab7b32e1802bb96d2e592510de6 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 18:34:46 -0400 Subject: [PATCH 17/35] Add Context Data --- .../data-platforms/context-data/index.md | 21 ++++++++++++++++++- .../integrations/data-platforms/index.md | 1 + 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/developers/integrations/data-platforms/context-data/index.md b/developers/integrations/data-platforms/context-data/index.md index ff0f6a7fde..e8032648e1 100644 --- a/developers/integrations/data-platforms/context-data/index.md +++ b/developers/integrations/data-platforms/context-data/index.md @@ -2,4 +2,23 @@ title: Context Data sidebar_position: 2 image: og/integrations/home.jpg ---- \ No newline at end of file +--- + +VectorETL by [Context Data](https://contextdata.ai/) is a modular no-code Python framework designed to help AI and Data Engineers to: + +* Quickly extract data from multiple data sources (databases, cloud storage, and local files) +* Embed using major models (including OpenAI, Cohere, and Google Gemini) +* Write to vector databases + +## Context Data and Weaviate +Weaviate is a [target connection](https://context-data.gitbook.io/context-data-1/adding-target-connections#add-a-weaviate-target-connection) in Context Data. You will need to create a Weaviate cluster and input the URL and authentication credentials when prompted. + + +## Our Resources +[**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| VectorETL into Weaviate | Three examples showing you how to ingest data from Google Cloud Storage, Postgress, and S3 into Weaviate. | [Notebook](https://github.com/weaviate/recipes/tree/main/integrations/data-platforms/context-data) | \ No newline at end of file diff --git a/developers/integrations/data-platforms/index.md b/developers/integrations/data-platforms/index.md index a6ad4681dc..452bb52772 100644 --- a/developers/integrations/data-platforms/index.md +++ b/developers/integrations/data-platforms/index.md @@ -8,6 +8,7 @@ Data Platforms offer robust solutions for managing, processing, and analyzing la Learn about how Weaviate integrates with these solutions: * [Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud) +* [Context Data](/developers/integrations/data-platforms/context-data/) * [Spark](/developers/integrations/data-platforms/spark) * [Unstructured](/developers/integrations/data-platforms/unstructured) * [Firecrawl](/developers/integrations/data-platforms/firecrawl/) \ No newline at end of file From 21b29a3a737ab3de7f6a4f5bc8c1daf85d2fa274 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 22:09:33 -0400 Subject: [PATCH 18/35] Add LangChain --- .../llm-frameworks/haystack/index.md | 4 +++ .../llm-frameworks/langchain/langchain.md | 34 ++++++++++++++++++- .../llm-frameworks/llamaindex/LlamaIndex.md | 2 +- .../semantic-kernel/semantic-kernel.md | 4 +-- 4 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 developers/integrations/llm-frameworks/haystack/index.md diff --git a/developers/integrations/llm-frameworks/haystack/index.md b/developers/integrations/llm-frameworks/haystack/index.md new file mode 100644 index 0000000000..f6d5061175 --- /dev/null +++ b/developers/integrations/llm-frameworks/haystack/index.md @@ -0,0 +1,4 @@ +--- +title: Haystack +sidebar_position: 3 +--- \ No newline at end of file diff --git a/developers/integrations/llm-frameworks/langchain/langchain.md b/developers/integrations/llm-frameworks/langchain/langchain.md index dd34c32e2c..55b27f77f9 100644 --- a/developers/integrations/llm-frameworks/langchain/langchain.md +++ b/developers/integrations/llm-frameworks/langchain/langchain.md @@ -1,4 +1,36 @@ --- title: LangChain sidebar_position: 4 ---- \ No newline at end of file +--- + +[LangChain](https://python.langchain.com/v0.2/docs/introduction/) is a framework used for building applications around large language models (LLMs). + +## LangChain and Weaviate +Weaviate is a supported [vector store](https://python.langchain.com/v0.2/docs/integrations/vectorstores/weaviate/#step-1-data-import) in LangChain. You will need a running Weaviate cluster (any deployment) to use the integration. + +You can connect to your Weaviate cluster: +```python +weaviate_client = weaviate.connect_to_local() +db = WeaviateVectorStore.from_documents(docs, embeddings, client=weaviate_client) +``` + +## Our Resources +The resources are broken into two categories: +1. [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +2. [**Read and Listen**](#read-and-listen): Develop your conceptual understanding of these technologies. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| LangChain LCEL | This repository currently contains a notebook showcasing how to define a language program with LangChain LCEL, compile it with DSPy, and convert it back to LangChain LCEL. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/langchain/LCEL/RAG-with-LangChain-LCEL-and-DSPy.ipynb) | +| LangChain and Multi-Tenancy | Build a multi-language RAG by multiple PDFs per tenant with Langchain, OpenAI, and Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/langchain/loading-data/langchain-simple-pdf-multitenant.ipynb) | +| Multi-Language RAG | Simple notebook showing you how to build a RAG application using LangChain and Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/langchain/loading-data/langchain-simple-pdf.ipynb) | + + +### Read and Listen +| Topic | Description | Resource | +| --- | --- | --- | +| Combining LangChain and Weaviate | Learn about how Weaviate is integrated in LangChain and the different `CombineDocuments` techniques. | [Blog](https://weaviate.io/blog/combining-langchain-and-weaviate) | +| Weaviate Podcast #36 | LangChain and Weaviate with Harrison Chase and Bob van Luijt | [Podcast](https://www.youtube.com/watch?v=lhby7Ql7hbk) | \ No newline at end of file diff --git a/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md b/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md index ae530d667c..56714e42d0 100644 --- a/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md +++ b/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md @@ -1,6 +1,6 @@ --- title: LlamaIndex -sidebar_position: 2 +sidebar_position: 5 image: og/docs/llamaindex.jpg --- diff --git a/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md b/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md index 2073fcb77d..7867da038c 100644 --- a/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md +++ b/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md @@ -1,4 +1,4 @@ --- title: Semantic Kernel -sidebar_position: 3 ---- \ No newline at end of file +sidebar_position: 6 +--- From 9e3570ccd17358ecfb7117cd66f239745d5a221f Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 22:20:29 -0400 Subject: [PATCH 19/35] Add Haystack --- .../llm-frameworks/haystack/index.md | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/developers/integrations/llm-frameworks/haystack/index.md b/developers/integrations/llm-frameworks/haystack/index.md index f6d5061175..0a806d5f26 100644 --- a/developers/integrations/llm-frameworks/haystack/index.md +++ b/developers/integrations/llm-frameworks/haystack/index.md @@ -1,4 +1,23 @@ --- title: Haystack sidebar_position: 3 ---- \ No newline at end of file +--- + +[Haystack](https://haystack.deepset.ai/) is a language model framework for build large language model applications + +## Haystack and Weaviate +Weaviate is a [supported document store](https://haystack.deepset.ai/integrations/weaviate-document-store) in Haystack. You need a running Weaviate cluster to build the document store. + +```python +auth_client_secret = AuthApiKey(Secret.from_token("MY_WEAVIATE_API_KEY")) +document_store = WeaviateDocumentStore(auth_client_secret=auth_client_secret) +``` + +## Our Resources +[**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| Advanced RAG: Query Expansion | Learn how to implement query expansion for RAG. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/haystack/query_expansion_haystack_weaviate.ipynb) | \ No newline at end of file From fee5d2e01d0024c090ad69173b3d257fc0f54302 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 22:43:55 -0400 Subject: [PATCH 20/35] Add LlamaIndex --- .../llm-frameworks/langchain/langchain.md | 3 +- .../llm-frameworks/llamaindex/LlamaIndex.md | 39 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/developers/integrations/llm-frameworks/langchain/langchain.md b/developers/integrations/llm-frameworks/langchain/langchain.md index 55b27f77f9..76112209f2 100644 --- a/developers/integrations/llm-frameworks/langchain/langchain.md +++ b/developers/integrations/llm-frameworks/langchain/langchain.md @@ -33,4 +33,5 @@ The resources are broken into two categories: | Topic | Description | Resource | | --- | --- | --- | | Combining LangChain and Weaviate | Learn about how Weaviate is integrated in LangChain and the different `CombineDocuments` techniques. | [Blog](https://weaviate.io/blog/combining-langchain-and-weaviate) | -| Weaviate Podcast #36 | LangChain and Weaviate with Harrison Chase and Bob van Luijt | [Podcast](https://www.youtube.com/watch?v=lhby7Ql7hbk) | \ No newline at end of file +| Weaviate Podcast #36 | LangChain and Weaviate with Harrison Chase and Bob van Luijt | [Podcast](https://www.youtube.com/watch?v=lhby7Ql7hbk) | +| Weaviate + LangChain for LLM apps | An overview of how LangChain and Weaviate work together. | [Video](https://youtu.be/7AGj4Td5Lgw?feature=shared) | \ No newline at end of file diff --git a/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md b/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md index 56714e42d0..0c414e3616 100644 --- a/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md +++ b/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md @@ -4,4 +4,41 @@ sidebar_position: 5 image: og/docs/llamaindex.jpg --- -Integrations page - welcome message +[LlamaIndex](https://www.llamaindex.ai/) is a framework for building large language model (LLM) applications. + +## LlamaIndex and Weaviate +Weaviate is a [supported vector store](https://docs.llamaindex.ai/en/stable/api_reference/storage/vector_store/weaviate/) in LlamaIndex. You need a running Weaviate instance to build the vector store. You can create it with: + +```python +vector_store = WeaviateVectorStore(weaviate_client=client, index_name="LlamaIndex") +``` + +## Our Resources +The resources are broken into two categories: +1. [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +2. [**Read and Listen**](#read-and-listen): Develop your conceptual understanding of these technologies. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| Data Loaders in LlamaIndex | Learn how to load data into Weaviate using LlamaIndex, and connect LlamaIndex to an existing Weaviate cluster. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/data-loaders-episode1/episode1.ipynb) | +| Indexes in LlamaIndex | Learn about the various indexes you can build in LlamaIndex. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/indexes-episode2/indexes-in-llamaindex.ipynb) | +| Recursive Query Engine | Learn how to build a recursive query engine. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/recursive-query-engine/recursive-retrieval.ipynb) | +| Self Correcting Query Engine | Setup your vector store and build a self-correcting query engine. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/self-correcting-query-engine/self-correcting.ipynb) | +| Simple Query Engine | Build a simple query engine | [Notebook](https://github.com/weaviate/recipes/tree/main/integrations/llm-frameworks/llamaindex/simple-query-engine) | +| SQL Router Query Engine | Build a SQL Query Engine to search through your vector and SQL database. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/sql-router-query-engine/sql-query-router.ipynb) | +| Sub-Question Query Engine | Build a query engine that will break down a complex question into multiple parts. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/sub-question-query-engine/sub_question_query_enginev1.ipynb) | +| Advanced RAG | This notebook walks your through an advanced Retrieval-Augmented Generation (RAG) pipeline using LlamaIndex and Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/retrieval-augmented-generation/advanced_rag.ipynb) | +| Naive RAG | This notebook walks your through a naive Retrieval-Augmented Generation (RAG) pipeline using LlamaIndex and Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/retrieval-augmented-generation/naive_rag.ipynb) + + + +### Read and Listen +| Topic | Description | Resource | +| --- | --- | --- | +| Episode 1: Data Loading | This episode will show you how to connect your data to LlamaIndex and Weaviate.| [Video](https://youtu.be/Bu9skgCrJY8?feature=shared) | +| Indexes in LlamaIndex | We cover the three indexes (Vector Store Index, List Index, and Tree Index) and walk through the architecture design. The video ends with a demo using the Vector Store Index and List Index. | [Video](https://youtu.be/6pLgOJrFL38?feature=shared) | +| Episode 3: RAG Techniques in LlamaIndex | Learn about four query engines implemented in LlamaIndex. | [Video](https://youtu.be/Su-ROQMaiaw?feature=shared) | +| LlamaIndex and Weaviate Blog | An introduction on LlamaIndex and an overview of the integration. | [Blog](https://weaviate.io/blog/llamaindex-and-weaviate) | From 2cc3550225f16e24fdbecd4a3e213c6515e49aa0 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 23:04:37 -0400 Subject: [PATCH 21/35] Add Semantic Kernel --- .../integrations/llm-frameworks/index.md | 10 +++++-- .../semantic-kernel/semantic-kernel.md | 27 +++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/developers/integrations/llm-frameworks/index.md b/developers/integrations/llm-frameworks/index.md index 383d6db672..44170ea385 100644 --- a/developers/integrations/llm-frameworks/index.md +++ b/developers/integrations/llm-frameworks/index.md @@ -4,8 +4,14 @@ sidebar_position: 4 image: og/integrations/home.jpg --- -Add content here +Large Language Model (LLM) frameworks contain several tools to help developers build applications with generative models. +Learn about how Weaviate integrates with these solutions: +* [Composio](/developers/integrations/llm-frameworks/composio/) +* [DSPy](/developers/integrations/llm-frameworks/dspy/) +* [Haystack](/developers/integrations/llm-frameworks/haystack/) +* [LangChain](/developers/integrations/llm-frameworks/langchain/) +* [LlamaIndex](/developers/integrations/llm-frameworks/llamaindex/) +* [Semantic Kernel](/developers/integrations/llm-frameworks/semantic-kernel/) -Add content here \ No newline at end of file diff --git a/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md b/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md index 7867da038c..c3e436d6e0 100644 --- a/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md +++ b/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md @@ -2,3 +2,30 @@ title: Semantic Kernel sidebar_position: 6 --- +Semantic Kernel is an LLM framework developed by Microsoft. Semantic Kernel facilitates building LLM applications with abstractions such as `plugins`, `memory`, `planners`, and more! + +## Semantic Kernel and Weaviate +Weaviate is a supported vector store in Semantic Kernel. + + +## Our Resources +The resources are broken into two categories: +1. [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +2. [**Read and Listen**](#read-and-listen): Develop your conceptual understanding of these technologies. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| RAG Chatbot with Semantic Kernel | Implements a simple workflow of retrieve then generate. using semantic kernel to help with prompt engineering and orchestrating OpenAI API calls and Weaviate as knowledgebase from which to retreive semantically relevant context. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/semantic-kernel/dotnet/Chatbot_RAG_Weaviate.ipynb) | +| Retrieval Augmented Generation using Weaviate and SK | Implements a simple workflow of retrieve then generate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/semantic-kernel/RetrievalAugmentedGeneration_Weaviate.ipynb) | +| Weasviate Persistent Memory | This notebook shows how to replace the `VolatileMemoryStore` memory storage with a `WeaviateMemoryStore` persistent memory. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/semantic-kernel/weaviate-persistent-memory.ipynb) | + + +### Read and Listen +| Topic | Description | Resource | +| --- | --- | --- | +| Weaviate Podcast | Humans and AI with John Maeda and Bob van Luijt | [Podcast](https://youtu.be/c9t0VViIP9c?feature=shared) | +| Weaviate at NeurIPS 2023 | A discussion with Alex Chao from Semantic Kernel | [Podcast](https://www.youtube.com/watch?v=xrZxk0H2cmY) | +| Semantic Kernel and Weaviate: Orchestrating interactions around LLMs with long-term memory | Learn how to use Semantic Kernel as the orchestration framework and Weaviate as the external knowledge source. | [Blog](https://devblogs.microsoft.com/semantic-kernel/guest-post-semantic-kernel-and-weaviate-orchestrating-interactions-around-llms-with-long-term-memory/) | \ No newline at end of file From 708071b42feee17cce1bc238b1bf3e70ebd9dd3e Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 23:18:38 -0400 Subject: [PATCH 22/35] Rename to Operations and add Arize --- developers/integrations/index.md | 2 +- .../arize/index.md | 7 ------- .../observability-and-evaluation/index.md | 7 ------- .../integrations/operations/arize/index.md | 19 +++++++++++++++++++ developers/integrations/operations/index.md | 17 +++++++++++++++++ .../langtrace/index.md | 0 .../operations/langwatch/index.md | 7 +++++++ .../nomic/index.md | 0 .../ragas/index.md | 0 .../wandb/index.md | 0 10 files changed, 44 insertions(+), 15 deletions(-) delete mode 100644 developers/integrations/observability-and-evaluation/arize/index.md delete mode 100644 developers/integrations/observability-and-evaluation/index.md create mode 100644 developers/integrations/operations/arize/index.md create mode 100644 developers/integrations/operations/index.md rename developers/integrations/{observability-and-evaluation => operations}/langtrace/index.md (100%) create mode 100644 developers/integrations/operations/langwatch/index.md rename developers/integrations/{observability-and-evaluation => operations}/nomic/index.md (100%) rename developers/integrations/{observability-and-evaluation => operations}/ragas/index.md (100%) rename developers/integrations/{observability-and-evaluation => operations}/wandb/index.md (100%) diff --git a/developers/integrations/index.md b/developers/integrations/index.md index e59e46a715..02372faf9c 100644 --- a/developers/integrations/index.md +++ b/developers/integrations/index.md @@ -34,4 +34,4 @@ The ecosystem is divided into these categories: | Compute Infrastructure | [Modal](/developers/integrations/compute-infrastructure/modal), [Replicate](/developers/integrations/compute-infrastructure/replicate) | | Data Platforms |[Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud), [Firecrawl](/developers/integrations/data-platforms/firecrawl), [Spark](/developers/integrations/data-platforms/spark), [Unstructured](/developers/integrations/data-platforms/unstructured) | | LLM Frameworks | DSPy, LangChain, LlamaIndex, Semantic Kernel | -| Observability and Evaluation | Arize, Langtrace, LangWatch, Nomic, Ragas, Weights & Biases | \ No newline at end of file +| Operations | Arize, Langtrace, LangWatch, Nomic, Ragas, Weights & Biases | \ 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 deleted file mode 100644 index f24d6a2a4a..0000000000 --- a/developers/integrations/observability-and-evaluation/arize/index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -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 deleted file mode 100644 index 40246e4a33..0000000000 --- a/developers/integrations/observability-and-evaluation/index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Observability and Evaluation -sidebar_position: 5 -image: og/integrations/home.jpg ---- - -Home page for Observability and Evaluation \ No newline at end of file diff --git a/developers/integrations/operations/arize/index.md b/developers/integrations/operations/arize/index.md new file mode 100644 index 0000000000..2c259024a7 --- /dev/null +++ b/developers/integrations/operations/arize/index.md @@ -0,0 +1,19 @@ +--- +title: Arize +sidebar_position: 1 +image: og/integrations/home.jpg +--- + +Phoenix is an open-source tool for tracing and evaluation built by [Arize AI](https://arize.com/). + +## Arize and Weaviate +You can log search queries sent to Weaviate, or requests to LLM providers through the OpenTelemetry into Phoenix. Phoenix provides a data visualization UI and additional APIs for accessing logged data. + +## Our Resources +[**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| DSPy Instrumentor | Log calls sent to DSPy using Phoenix | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/observability-and-evaluation/arize/DSPy-Instrumentor.py) | \ No newline at end of file diff --git a/developers/integrations/operations/index.md b/developers/integrations/operations/index.md new file mode 100644 index 0000000000..70277ea974 --- /dev/null +++ b/developers/integrations/operations/index.md @@ -0,0 +1,17 @@ +--- +title: Operations +sidebar_position: 5 +image: og/integrations/home.jpg +--- + +The following integrations with Weaviate facilitate operations associated with running Vector Database applications. + +For example, Vector Databases are typically paired with Large Language Models in Retrieval-Augmented Generation systems. To help monitor these applications in productions, several tools have emerged with user interface and logging services. + +Learn about how Weaviate integrates with these solutions: +* [Arize](/developers/integrations/operations/arize/) +* [Langtrace](/developers/integrations/operations/langtrace/) +* [LangWatch](/developers/integrations/operations/langwatch) +* [Nomic](/developers/integrations/operations/nomic/) +* [Ragas](/developers/integrations/operations/ragas/) +* [Weights and Biases](/developers/integrations/operations/wandb/) diff --git a/developers/integrations/observability-and-evaluation/langtrace/index.md b/developers/integrations/operations/langtrace/index.md similarity index 100% rename from developers/integrations/observability-and-evaluation/langtrace/index.md rename to developers/integrations/operations/langtrace/index.md diff --git a/developers/integrations/operations/langwatch/index.md b/developers/integrations/operations/langwatch/index.md new file mode 100644 index 0000000000..a65525adff --- /dev/null +++ b/developers/integrations/operations/langwatch/index.md @@ -0,0 +1,7 @@ +--- +title: Langwatch +sidebar_position: 3 +image: og/integrations/home.jpg +--- + +Home page for LangWatch \ No newline at end of file diff --git a/developers/integrations/observability-and-evaluation/nomic/index.md b/developers/integrations/operations/nomic/index.md similarity index 100% rename from developers/integrations/observability-and-evaluation/nomic/index.md rename to developers/integrations/operations/nomic/index.md diff --git a/developers/integrations/observability-and-evaluation/ragas/index.md b/developers/integrations/operations/ragas/index.md similarity index 100% rename from developers/integrations/observability-and-evaluation/ragas/index.md rename to developers/integrations/operations/ragas/index.md diff --git a/developers/integrations/observability-and-evaluation/wandb/index.md b/developers/integrations/operations/wandb/index.md similarity index 100% rename from developers/integrations/observability-and-evaluation/wandb/index.md rename to developers/integrations/operations/wandb/index.md From df289f27e5c569fc781c076cb8b4c811caf2f24d Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 23:23:25 -0400 Subject: [PATCH 23/35] Add Langtrace --- .../integrations/operations/langtrace/index.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/developers/integrations/operations/langtrace/index.md b/developers/integrations/operations/langtrace/index.md index 14d0d74fd6..f3086fbcc7 100644 --- a/developers/integrations/operations/langtrace/index.md +++ b/developers/integrations/operations/langtrace/index.md @@ -4,4 +4,16 @@ sidebar_position: 2 image: og/integrations/home.jpg --- -Home page for Langtrace \ No newline at end of file +[Langtrace](https://langtrace.ai/) is an open-source project that uses Open Telemetry observability. + +## Langtrace and Weaviate +The integration allows you to view vector search and generative calls made to your Weaviate cluster. + +## Our Resources +[**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| Weaviate and Langtrace Observability | View the vector and generative calls made to your application. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/observability-and-evaluation/langtrace/weaviate_observability.ipynb) | \ No newline at end of file From bbfec9400d211f4dfbcb1c0d7dfb46b05462cf6e Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 23:31:27 -0400 Subject: [PATCH 24/35] Add Nomic and LangWatch --- .../integrations/operations/langwatch/index.md | 13 ++++++++++++- developers/integrations/operations/nomic/index.md | 15 ++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/developers/integrations/operations/langwatch/index.md b/developers/integrations/operations/langwatch/index.md index a65525adff..ce4814f6a5 100644 --- a/developers/integrations/operations/langwatch/index.md +++ b/developers/integrations/operations/langwatch/index.md @@ -3,5 +3,16 @@ title: Langwatch sidebar_position: 3 image: og/integrations/home.jpg --- +[LangWatch](https://langwatch.ai/) is an LLM operations platform offering tools to control the quality of your AI application. -Home page for LangWatch \ No newline at end of file +## LangWatch and Weaviate +Connect to your Weaviate instance to log the traces. It also connects to DSPy to track the performance of each prompt paraphrasing. + +## Our Resources +[**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| DSPy with Weaviate + LangWatch DSPy Visualizer | This notebook shows an example of DSPy RAG program using Weaviate as the vector database and LangWatch for visualization of the DSPy optimization process. | [Notebook](https://github.com/weaviate/recipes/tree/main/integrations/observability-and-evaluation/langwatch) | \ No newline at end of file diff --git a/developers/integrations/operations/nomic/index.md b/developers/integrations/operations/nomic/index.md index 7f5bc586c0..d53aa8c382 100644 --- a/developers/integrations/operations/nomic/index.md +++ b/developers/integrations/operations/nomic/index.md @@ -3,5 +3,18 @@ title: Nomic sidebar_position: 3 image: og/integrations/home.jpg --- +[Nomic AI's] Atlas is a visualization tool for vector embeddings. This describes reducing the dimensionality of high-dimensional vectors into 2 or 3 dimensions with algorithms such as t-SNE, UMAP, or PCA. These vectors can then be easily visualized by humans in scatter plots. + +## Nomic and Weaviate +Connect to your Weaviate cluster to visualize the embeddings in your collection. + +## Our Resources +[**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| Vector Space Visual | Visualize the embeddings in your Weaviate cluster. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/observability-and-evaluation/nomic/vector_space_visual.ipynb) | + -Home page for Nomic \ No newline at end of file From be85142bf92b36478687244d944e7213e30aaa93 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 23:36:30 -0400 Subject: [PATCH 25/35] Add Ragas --- .../integrations/operations/ragas/index.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/developers/integrations/operations/ragas/index.md b/developers/integrations/operations/ragas/index.md index 55aaa0c4b7..2afb1687a0 100644 --- a/developers/integrations/operations/ragas/index.md +++ b/developers/integrations/operations/ragas/index.md @@ -3,5 +3,21 @@ title: Ragas sidebar_position: 4 image: og/integrations/home.jpg --- +[Ragas](https://docs.ragas.io/en/stable/) is a framework to help you evaluate your retrieval augmented generation (RAG) applications. -Home page for Ragas \ No newline at end of file +## Nomic and Weaviate +You'll need to store the `question`, `answer`, `ground_truths`, and `contexts` in a json to load it into Ragas. The Ragas metrics are: +* faithfulness +* answer_relevancy +* context_precision +* context_recall + +## Our Resources +[**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| Introduction Ragas Demo | Learn how to use Weaviate and Ragas | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/observability-and-evaluation/ragas/ragas-demo.ipynb) | +| Ragas and LangChain | Learn how to connect Ragas and LangChain. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/observability-and-evaluation/ragas/RAGAs-RAG-langchain.ipynb) | \ No newline at end of file From 502e26f65a0fe8f15caec575e8594152b9af453a Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Wed, 28 Aug 2024 23:43:39 -0400 Subject: [PATCH 26/35] Add Ragas, W&B, and update main page --- developers/integrations/index.md | 4 ++-- developers/integrations/operations/ragas/index.md | 2 +- developers/integrations/operations/wandb/index.md | 15 ++++++++++++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/developers/integrations/index.md b/developers/integrations/index.md index 02372faf9c..15cacb8d62 100644 --- a/developers/integrations/index.md +++ b/developers/integrations/index.md @@ -33,5 +33,5 @@ The ecosystem is divided into these categories: | Cloud Hyperscalers | [Google](/developers/integrations/cloud-hyperscalers/google), [AWS](/developers/integrations/cloud-hyperscalers/aws), Azure| | Compute Infrastructure | [Modal](/developers/integrations/compute-infrastructure/modal), [Replicate](/developers/integrations/compute-infrastructure/replicate) | | Data Platforms |[Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud), [Firecrawl](/developers/integrations/data-platforms/firecrawl), [Spark](/developers/integrations/data-platforms/spark), [Unstructured](/developers/integrations/data-platforms/unstructured) | -| LLM Frameworks | DSPy, LangChain, LlamaIndex, Semantic Kernel | -| Operations | Arize, Langtrace, LangWatch, Nomic, Ragas, Weights & Biases | \ No newline at end of file +| LLM Frameworks | [Composio](/developers/integrations/llm-frameworks/composio/), [DSPy](/developers/integrations/llm-frameworks/dspy/), [LangChain](/developers/integrations/llm-frameworks/langchain/), [LlamaIndex](/developers/integrations/llm-frameworks/llamaindex/), [Semantic Kernel](/developers/integrations/llm-frameworks/semantic-kernel/) | +| Operations | [Arize](/developers/integrations/operations/arize/), [Langtrace](/developers/integrations/operations/langtrace/), [LangWatch](/developers/integrations/operations/langwatch/), [Nomic](/developers/integrations/operations/nomic/), [Ragas](/developers/integrations/operations/ragas/), [Weights & Biases](/developers/integrations/operations/wandb/) | \ No newline at end of file diff --git a/developers/integrations/operations/ragas/index.md b/developers/integrations/operations/ragas/index.md index 2afb1687a0..5e293d4c7d 100644 --- a/developers/integrations/operations/ragas/index.md +++ b/developers/integrations/operations/ragas/index.md @@ -5,7 +5,7 @@ image: og/integrations/home.jpg --- [Ragas](https://docs.ragas.io/en/stable/) is a framework to help you evaluate your retrieval augmented generation (RAG) applications. -## Nomic and Weaviate +## Ragas and Weaviate You'll need to store the `question`, `answer`, `ground_truths`, and `contexts` in a json to load it into Ragas. The Ragas metrics are: * faithfulness * answer_relevancy diff --git a/developers/integrations/operations/wandb/index.md b/developers/integrations/operations/wandb/index.md index b654bb84bb..4c6f71a38c 100644 --- a/developers/integrations/operations/wandb/index.md +++ b/developers/integrations/operations/wandb/index.md @@ -4,4 +4,17 @@ sidebar_position: 5 image: og/integrations/home.jpg --- -Home page for Weights and Biases \ No newline at end of file +[Weights and Biases(W&B)](https://wandb.ai/site) is an AI developer platform with products such as `Models` and `Weave`. Weights and Biases is famous for `Models` and machine learning model training visualizations such as `runs` and `sweeps`. + +## Weights and Biases and Weaviate +`Weave` from W&B offers a user interface and data analysis APIs for monitoring applications using LLM, RAG, Agents, and Vector Databases. + +## Our Resources +[**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| W&B Logging with DSPy and Cohere RAG app | An example of using wandb logging to monitor optimizing a RAG system with DSPy, Weaviate, and Cohere. | [Notebook](https://github.com/weaviate/recipes/tree/main/integrations/observability-and-evaluation/weights_and_biases) | + From 36a83b6c34476538724150ae313d47de5131dad8 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Thu, 29 Aug 2024 09:53:23 -0400 Subject: [PATCH 27/35] Update main page --- developers/integrations/data-platforms/context-data/index.md | 2 +- developers/integrations/index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/developers/integrations/data-platforms/context-data/index.md b/developers/integrations/data-platforms/context-data/index.md index e8032648e1..8bb2f66a12 100644 --- a/developers/integrations/data-platforms/context-data/index.md +++ b/developers/integrations/data-platforms/context-data/index.md @@ -21,4 +21,4 @@ Weaviate is a [target connection](https://context-data.gitbook.io/context-data-1 | Topic | Description | Resource | | --- | --- | --- | -| VectorETL into Weaviate | Three examples showing you how to ingest data from Google Cloud Storage, Postgress, and S3 into Weaviate. | [Notebook](https://github.com/weaviate/recipes/tree/main/integrations/data-platforms/context-data) | \ No newline at end of file +| VectorETL into Weaviate | Three examples showing you how to ingest data from Google Cloud Storage, Postgres, and S3 into Weaviate. | [Notebook](https://github.com/weaviate/recipes/tree/main/integrations/data-platforms/context-data) | \ No newline at end of file diff --git a/developers/integrations/index.md b/developers/integrations/index.md index 15cacb8d62..076a3d245d 100644 --- a/developers/integrations/index.md +++ b/developers/integrations/index.md @@ -32,6 +32,6 @@ The ecosystem is divided into these categories: |------------------|-----------| | Cloud Hyperscalers | [Google](/developers/integrations/cloud-hyperscalers/google), [AWS](/developers/integrations/cloud-hyperscalers/aws), Azure| | Compute Infrastructure | [Modal](/developers/integrations/compute-infrastructure/modal), [Replicate](/developers/integrations/compute-infrastructure/replicate) | -| Data Platforms |[Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud), [Firecrawl](/developers/integrations/data-platforms/firecrawl), [Spark](/developers/integrations/data-platforms/spark), [Unstructured](/developers/integrations/data-platforms/unstructured) | +| Data Platforms |[Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud), [Context Data](/developers/integrations/data-platforms/context-data/), [Firecrawl](/developers/integrations/data-platforms/firecrawl), [Spark](/developers/integrations/data-platforms/spark), [Unstructured](/developers/integrations/data-platforms/unstructured) | | LLM Frameworks | [Composio](/developers/integrations/llm-frameworks/composio/), [DSPy](/developers/integrations/llm-frameworks/dspy/), [LangChain](/developers/integrations/llm-frameworks/langchain/), [LlamaIndex](/developers/integrations/llm-frameworks/llamaindex/), [Semantic Kernel](/developers/integrations/llm-frameworks/semantic-kernel/) | | Operations | [Arize](/developers/integrations/operations/arize/), [Langtrace](/developers/integrations/operations/langtrace/), [LangWatch](/developers/integrations/operations/langwatch/), [Nomic](/developers/integrations/operations/nomic/), [Ragas](/developers/integrations/operations/ragas/), [Weights & Biases](/developers/integrations/operations/wandb/) | \ No newline at end of file From b1475bb9ffc120f369ff78e0fcdec061fa978c23 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Fri, 30 Aug 2024 17:17:50 -0400 Subject: [PATCH 28/35] Edits from Dave --- .../data-platforms/confluent-cloud/index.md | 8 ++++++-- .../data-platforms/context-data/index.md | 5 +++-- .../data-platforms/firecrawl/index.md | 8 +++++--- .../integrations/data-platforms/spark/index.md | 4 ++-- .../data-platforms/unstructured/index.md | 2 +- developers/integrations/index.md | 4 ++-- .../llm-frameworks/composio/index.md | 10 ++++++---- .../integrations/llm-frameworks/dspy/dspy.md | 16 ++++++++++------ .../llm-frameworks/haystack/index.md | 2 +- developers/integrations/llm-frameworks/index.md | 5 ++--- .../llm-frameworks/langchain/langchain.md | 6 +++--- .../llm-frameworks/llamaindex/LlamaIndex.md | 14 ++++++++------ .../semantic-kernel/semantic-kernel.md | 8 ++++---- .../integrations/operations/arize/index.md | 6 ++++-- developers/integrations/operations/index.md | 2 +- .../integrations/operations/langtrace/index.md | 4 ++-- .../integrations/operations/langwatch/index.md | 6 ++++-- .../integrations/operations/nomic/index.md | 4 ++-- .../integrations/operations/ragas/index.md | 4 +++- .../integrations/operations/wandb/index.md | 4 ++-- 20 files changed, 71 insertions(+), 51 deletions(-) diff --git a/developers/integrations/data-platforms/confluent-cloud/index.md b/developers/integrations/data-platforms/confluent-cloud/index.md index 284dec6506..ec732b34d1 100644 --- a/developers/integrations/data-platforms/confluent-cloud/index.md +++ b/developers/integrations/data-platforms/confluent-cloud/index.md @@ -4,10 +4,14 @@ sidebar_position: 1 image: og/integrations/home.jpg --- -Confluent Cloud is a fully managed Apache Kafka service that offers real-time data streaming with seamless integration across major cloud providers, high performance, and robust security features. Learn more at [Confluent Cloud](https://www.confluent.io/confluent-cloud/). +Confluent Cloud is a fully managed Apache Kafka service that offers real-time data streaming, seamless integration across major cloud providers, high performance, and robust security features. + +Learn more at [Confluent Cloud](https://www.confluent.io/confluent-cloud/). ## Confluent and Weaviate -You can stream data from Confluent Cloud to Weaviate using the [Weaviate Confluent Connector](https://github.com/weaviate/confluent-connector). For setup and usage details, refer to the connector's [README](https://github.com/weaviate/confluent-connector/blob/main/README.md). +Stream data from Confluent Cloud to Weaviate with the [Weaviate Confluent Connector](https://github.com/weaviate/confluent-connector). + +For setup and usage details, see the [connector README](https://github.com/weaviate/confluent-connector/blob/main/README.md). ## Our Resources diff --git a/developers/integrations/data-platforms/context-data/index.md b/developers/integrations/data-platforms/context-data/index.md index 8bb2f66a12..9102af147e 100644 --- a/developers/integrations/data-platforms/context-data/index.md +++ b/developers/integrations/data-platforms/context-data/index.md @@ -4,15 +4,16 @@ sidebar_position: 2 image: og/integrations/home.jpg --- -VectorETL by [Context Data](https://contextdata.ai/) is a modular no-code Python framework designed to help AI and Data Engineers to: +VectorETL by [Context Data](https://contextdata.ai/) is a modular no-code Python framework that is designed to help AI and Data Engineers work with data: * Quickly extract data from multiple data sources (databases, cloud storage, and local files) * Embed using major models (including OpenAI, Cohere, and Google Gemini) * Write to vector databases ## Context Data and Weaviate -Weaviate is a [target connection](https://context-data.gitbook.io/context-data-1/adding-target-connections#add-a-weaviate-target-connection) in Context Data. You will need to create a Weaviate cluster and input the URL and authentication credentials when prompted. +Weaviate is a [target connection](https://context-data.gitbook.io/context-data-1/adding-target-connections#add-a-weaviate-target-connection) in Context Data. +To connect to ContextData, open the console and input your Weaviate instance's URL and authentication credentials when prompted. ## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. diff --git a/developers/integrations/data-platforms/firecrawl/index.md b/developers/integrations/data-platforms/firecrawl/index.md index 7454a1a396..84686ba518 100644 --- a/developers/integrations/data-platforms/firecrawl/index.md +++ b/developers/integrations/data-platforms/firecrawl/index.md @@ -4,10 +4,12 @@ sidebar_position: 3 image: og/integrations/home.jpg --- -[Firecrawl](https://www.firecrawl.dev/) is an AI first web scraping tool that allows you to easily crawl and extract clean, structured data from websites. It is an API service that converts a URL into clean markdown or structured data. +[Firecrawl](https://www.firecrawl.dev/) is an AI first web scraping tool. + +It allows you to easily crawl and extract clean, structured data from websites. It is an API service that converts a URL into clean markdown or structured data. ## Firecrawl and Weaviate -Firecrawl handles the complexities of web scraping like proxies, caching, rate limits, and dynamic content, delivering markdown or JSON output that is ready to be ingested into vector databases like Weaviate. + Firecrawl handles the complexities of web scraping like proxies, caching, rate limits, and dynamic content. It produces markdown or JSON formatted output that is ready to be ingested into vector databases like Weaviate. ## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. @@ -16,4 +18,4 @@ Firecrawl handles the complexities of web scraping like proxies, caching, rate l | Topic | Description | Resource | | --- | --- | --- | -| Firecrawl to Weaviate | This notebook will show you how to scrape webpages using Firecrawl and load it into Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/data-platforms/web-search/firecrawl/firecrawl-to-weaviate.ipynb) \ No newline at end of file +| Firecrawl to Weaviate | This notebook shows you how to scrape webpages with Firecrawl and load their contents into Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/data-platforms/web-search/firecrawl/firecrawl-to-weaviate.ipynb) \ No newline at end of file diff --git a/developers/integrations/data-platforms/spark/index.md b/developers/integrations/data-platforms/spark/index.md index 4ff9c2327a..e8d5b6187e 100644 --- a/developers/integrations/data-platforms/spark/index.md +++ b/developers/integrations/data-platforms/spark/index.md @@ -4,12 +4,12 @@ sidebar_position: 4 image: og/integrations/home.jpg --- -[Apache Spark](https://spark.apache.org/docs/latest/api/python/index.html) (or the Python API, PySpark) is an open-source data processing framework used for real-time, large-scale data processing. +[Apache Spark](https://spark.apache.org/docs/latest/api/python/index.html) (or the Python API, [PySpark](https://spark.apache.org/docs/latest/api/python/index.html#:~:text=PySpark%20is%20the%20Python%20API,for%20interactively%20analyzing%20your%20data.)) is an open-source data processing framework used for real-time, large-scale data processing. ## Spark and Weaviate The Spark connector enables you to easily ingest data from Spark data structures into Weaviate. -You can learn more about the Weaviate connector for Spark in [this repository](https://github.com/weaviate/spark-connector). +Learn more about the connector in the Weaviate[ Spark connector repository](https://github.com/weaviate/spark-connector). ## Our Resources The resources are broken into two categories: diff --git a/developers/integrations/data-platforms/unstructured/index.md b/developers/integrations/data-platforms/unstructured/index.md index 0931aa1f0d..64f95add09 100644 --- a/developers/integrations/data-platforms/unstructured/index.md +++ b/developers/integrations/data-platforms/unstructured/index.md @@ -4,7 +4,7 @@ sidebar_position: 5 image: og/integrations/home.jpg --- -[Unstructured](https://unstructured.io/) offers a platform and tools for ingesting and processing unstructured data for building retrieval augmented generation (RAG) applications. +[Unstructured](https://unstructured.io/) offers a platform and tools to work with unstructured data. Ingest and process unstructured data to use in retrieval augmented generation (RAG) applications. Unstructured has two offerings: 1. [Unstructured Platform](https://docs.unstructured.io/platform/overview): No-code user interface diff --git a/developers/integrations/index.md b/developers/integrations/index.md index 076a3d245d..74ea785cdf 100644 --- a/developers/integrations/index.md +++ b/developers/integrations/index.md @@ -22,7 +22,7 @@ The ecosystem is divided into these categories: * **Compute Infrastructure** - Run and scale containerized applications * **Data Platforms** - Data ingestion and web scraping * **LLM Frameworks** - Build generative AI applications -* **Observability and Evaluation** - Monitor and analyze generative AI workflows +* **Operations** - Tools for monitoring and analyzing generative AI workflows @@ -30,7 +30,7 @@ The ecosystem is divided into these categories: | Company Category | Companies | |------------------|-----------| -| Cloud Hyperscalers | [Google](/developers/integrations/cloud-hyperscalers/google), [AWS](/developers/integrations/cloud-hyperscalers/aws), Azure| +| Cloud Hyperscalers | [Google](/developers/integrations/cloud-hyperscalers/google), [AWS](/developers/integrations/cloud-hyperscalers/aws)| | Compute Infrastructure | [Modal](/developers/integrations/compute-infrastructure/modal), [Replicate](/developers/integrations/compute-infrastructure/replicate) | | Data Platforms |[Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud), [Context Data](/developers/integrations/data-platforms/context-data/), [Firecrawl](/developers/integrations/data-platforms/firecrawl), [Spark](/developers/integrations/data-platforms/spark), [Unstructured](/developers/integrations/data-platforms/unstructured) | | LLM Frameworks | [Composio](/developers/integrations/llm-frameworks/composio/), [DSPy](/developers/integrations/llm-frameworks/dspy/), [LangChain](/developers/integrations/llm-frameworks/langchain/), [LlamaIndex](/developers/integrations/llm-frameworks/llamaindex/), [Semantic Kernel](/developers/integrations/llm-frameworks/semantic-kernel/) | diff --git a/developers/integrations/llm-frameworks/composio/index.md b/developers/integrations/llm-frameworks/composio/index.md index 5806468901..c9ec5dae0f 100644 --- a/developers/integrations/llm-frameworks/composio/index.md +++ b/developers/integrations/llm-frameworks/composio/index.md @@ -4,17 +4,19 @@ sidebar_position: 1 image: og/integrations/home.jpg --- -[Composio](https://docs.composio.dev/introduction/intro/overview) uses function calling for managing and integrating tools with language models and AI agents. +[Composio](https://docs.composio.dev/introduction/intro/overview) uses function calling to manage and integrate tools with language models and AI agents. ## Composio and Weaviate -With Weaviate's retrieval, you can make the agent more personalized and context-aware. +With Weaviate's retrieval, you can personalize the agent(s) and make them more context aware. -The integration is supported through our LangChain vector store. You need to have a running Weaviate instance and create the vector store with: +The integration is supported through our LangChain vector store. + +To configure the integration, create the vector store and connect to your Weaviate instance: ```python WeaviateVectorStore.from_documents( ) ``` -You can learn more about how to create a vector store [here](https://python.langchain.com/v0.2/docs/integrations/vectorstores/weaviate/#step-1-data-import). +Learn how to [create a vector store](https://python.langchain.com/v0.2/docs/integrations/vectorstores/weaviate/#step-1-data-import). ## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. diff --git a/developers/integrations/llm-frameworks/dspy/dspy.md b/developers/integrations/llm-frameworks/dspy/dspy.md index b75dc61371..98841cc848 100644 --- a/developers/integrations/llm-frameworks/dspy/dspy.md +++ b/developers/integrations/llm-frameworks/dspy/dspy.md @@ -3,15 +3,19 @@ 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**. +[DSPy](https://github.com/stanfordnlp/dspy) from Stanford NLP is a framework for programming language models. -- **Programing model**: The programming model lets you define a series of components that make a language model request. Components include input and output fields, task descriptions, and calls to a vector database like Weaviate. +DSPy introduces two key concepts, the **programming model** and **optimizers**. + +- **Programing model**: The programming model lets you define a series of components that make a language model request. Components include input fields, output fields, task descriptions, and calls to a vector database like Weaviate. - **Optimizers**: Optimizers compile your DSPy program to tune the language model prompt and/or the weights. ## DSPy and Weaviate -Weaviate is integrated with DSPy through the retriever module! You only need to connect to your Weaviate cluster through [WCD](https://console.weaviate.cloud/) or localhost, and pass in your collection: +Weaviate is integrated with DSPy through the retriever model! + +Connect your Weaviate cluster (WCD or local instance) to DSPy, use the [retriever module](https://dspy-docs.vercel.app/docs/deep-dive/retrieval_models_clients/WeaviateRM) and pass in your collection: ```python weaviate_client = weaviate.Client("http://localhost:8080") # or pass in your WCD cluster url @@ -21,7 +25,7 @@ retriever_module = WeaviateRM("WeaviateBlogChunk", # collection name ``` ## Our Resources -Here are a few resources on using DSPy from the Weaviate team! +Here are a few resources from the Weaviate team on using DSPy! The resources are broken into two categories: 1. [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. @@ -33,7 +37,7 @@ The resources are broken into two categories: | Topic | Description | Resource | | --- | --- | --- | -| Getting Started with RAG in DSPy | Learn about the four components needed to build a DSPy program: Installation, settings, datasets with `dspy.Example`, LLM metrics, DSPy programming model, and optimization. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/1.Getting-Started-with-RAG-in-DSPy.ipynb), [Video](https://youtu.be/CEuUG4Umfxs?si=4Gp8gR9glmoMJNaU) | +| Getting Started with RAG in DSPy | Learn about DSPy and how to build a program: Installation, settings, datasets, LLM metrics, DSPy programming model, and optimization. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/1.Getting-Started-with-RAG-in-DSPy.ipynb), [Video](https://youtu.be/CEuUG4Umfxs?si=4Gp8gR9glmoMJNaU) | | DSPy + Weaviate for the Next Generation of LLM Apps | Build a 4-layer DSPy program for generating blog posts from queries. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/2.Writing-Blog-Posts-with-DSPy.ipynb), [Video](https://youtu.be/ickqCzFxWj0?si=AxCbD9tq2cbAH6bB)| | RAG with Persona | Build a compound AI system with DSPy, Cohere, and Weaviate, where you'll add a persona to the language model. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/fullstack-recipes/RAGwithPersona/4.RAG-with-Persona.ipynb), [Post](https://twitter.com/ecardenas300/status/1765444492348243976)| | Adding Depth to RAG Programs | Enhancing DSPy programs by integrating unique input-output examples and multiple LLMs. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/dspy/3.Adding-Depth-to-RAG-Programs.ipynb), [Video](https://youtu.be/0c7Ksd6BG88?si=YUF2wm1ncUTkSuPQ) | @@ -51,7 +55,7 @@ The resources are broken into two categories: | Topic | Description | Resource | | --- | --- | --- | | DSPy and ColBERT with Omar Khattab! - Weaviate Podcast #85 | Omar Khattab joins the Weaviate podcast to discuss DSPy and ColBERT. | [Video](https://www.youtube.com/watch?v=CDung1LnLbY) | -| DSPy Explained| The core concepts of DSPy and walks through the introduction notebooks showing how to compile a simple retrieve-then-read RAG program and Multi-Hop RAG Program. | [Video](https://youtu.be/41EfOY0Ldkc?si=sFieUeHc9rXRn6uk)| +| DSPy Explained| Learn about the core concepts of DSPy. Walk through the introduction notebooks to compile a simple retrieve-then-read RAG program and Multi-Hop RAG Program. | [Video](https://youtu.be/41EfOY0Ldkc?si=sFieUeHc9rXRn6uk)| | XMC.dspy with Karel D'Oosterlinck - Weaviate Podcast #87 | Karel D'Oosterlinck joins the Weaviate podcast to discuss IReRa (Infer-Retrieve-Rank). | [Video](https://youtu.be/_ye26_8XPcs?si=ZBodgHbOcaq2Kwky) | Intro to DSPy: Goodbye Prompting, Hello Programming | Overview of DSPy and how it solves the fragility problem in LLM-based applications. | [Blog](https://towardsdatascience.com/intro-to-dspy-goodbye-prompting-hello-programming-4ca1c6ce3eb9)| | Fine-Tuning Cohere’s Reranker | Generate synthetic data with DSPy to fine-tune Cohere’s reranker model. |[Blog](/blog/fine-tuning-coheres-reranker)| diff --git a/developers/integrations/llm-frameworks/haystack/index.md b/developers/integrations/llm-frameworks/haystack/index.md index 0a806d5f26..b396edb111 100644 --- a/developers/integrations/llm-frameworks/haystack/index.md +++ b/developers/integrations/llm-frameworks/haystack/index.md @@ -3,7 +3,7 @@ title: Haystack sidebar_position: 3 --- -[Haystack](https://haystack.deepset.ai/) is a language model framework for build large language model applications +[Haystack](https://haystack.deepset.ai/) is a framework for building large language model applications. ## Haystack and Weaviate Weaviate is a [supported document store](https://haystack.deepset.ai/integrations/weaviate-document-store) in Haystack. You need a running Weaviate cluster to build the document store. diff --git a/developers/integrations/llm-frameworks/index.md b/developers/integrations/llm-frameworks/index.md index 44170ea385..60ce2a4e30 100644 --- a/developers/integrations/llm-frameworks/index.md +++ b/developers/integrations/llm-frameworks/index.md @@ -4,10 +4,9 @@ sidebar_position: 4 image: og/integrations/home.jpg --- -Large Language Model (LLM) frameworks contain several tools to help developers build applications with generative models. +These Large Language Model (LLM) frameworks have tools to help developers build applications with generative models. - -Learn about how Weaviate integrates with these solutions: +Learn how Weaviate integrates with these solutions: * [Composio](/developers/integrations/llm-frameworks/composio/) * [DSPy](/developers/integrations/llm-frameworks/dspy/) * [Haystack](/developers/integrations/llm-frameworks/haystack/) diff --git a/developers/integrations/llm-frameworks/langchain/langchain.md b/developers/integrations/llm-frameworks/langchain/langchain.md index 76112209f2..ce36974266 100644 --- a/developers/integrations/llm-frameworks/langchain/langchain.md +++ b/developers/integrations/llm-frameworks/langchain/langchain.md @@ -3,12 +3,12 @@ title: LangChain sidebar_position: 4 --- -[LangChain](https://python.langchain.com/v0.2/docs/introduction/) is a framework used for building applications around large language models (LLMs). +[LangChain](https://python.langchain.com/v0.2/docs/introduction/) is a framework for building applications that use large language models (LLMs). ## LangChain and Weaviate Weaviate is a supported [vector store](https://python.langchain.com/v0.2/docs/integrations/vectorstores/weaviate/#step-1-data-import) in LangChain. You will need a running Weaviate cluster (any deployment) to use the integration. -You can connect to your Weaviate cluster: +Connect LangChain to your Weaviate cluster: ```python weaviate_client = weaviate.connect_to_local() db = WeaviateVectorStore.from_documents(docs, embeddings, client=weaviate_client) @@ -24,7 +24,7 @@ The resources are broken into two categories: | Topic | Description | Resource | | --- | --- | --- | -| LangChain LCEL | This repository currently contains a notebook showcasing how to define a language program with LangChain LCEL, compile it with DSPy, and convert it back to LangChain LCEL. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/langchain/LCEL/RAG-with-LangChain-LCEL-and-DSPy.ipynb) | +| LangChain LCEL | A notebook that defines a language program with LangChain LCEL, compiles it with DSPy, and converts it back to LangChain LCEL. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/langchain/LCEL/RAG-with-LangChain-LCEL-and-DSPy.ipynb) | | LangChain and Multi-Tenancy | Build a multi-language RAG by multiple PDFs per tenant with Langchain, OpenAI, and Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/langchain/loading-data/langchain-simple-pdf-multitenant.ipynb) | | Multi-Language RAG | Simple notebook showing you how to build a RAG application using LangChain and Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/langchain/loading-data/langchain-simple-pdf.ipynb) | diff --git a/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md b/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md index 0c414e3616..e28527f670 100644 --- a/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md +++ b/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md @@ -7,7 +7,9 @@ image: og/docs/llamaindex.jpg [LlamaIndex](https://www.llamaindex.ai/) is a framework for building large language model (LLM) applications. ## LlamaIndex and Weaviate -Weaviate is a [supported vector store](https://docs.llamaindex.ai/en/stable/api_reference/storage/vector_store/weaviate/) in LlamaIndex. You need a running Weaviate instance to build the vector store. You can create it with: +Weaviate is a [supported vector store](https://docs.llamaindex.ai/en/stable/api_reference/storage/vector_store/weaviate/) in LlamaIndex. + +Create a vector store: ```python vector_store = WeaviateVectorStore(weaviate_client=client, index_name="LlamaIndex") @@ -23,22 +25,22 @@ The resources are broken into two categories: | Topic | Description | Resource | | --- | --- | --- | -| Data Loaders in LlamaIndex | Learn how to load data into Weaviate using LlamaIndex, and connect LlamaIndex to an existing Weaviate cluster. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/data-loaders-episode1/episode1.ipynb) | +| Data Loaders in LlamaIndex | Learn how to load data into Weaviate using LlamaIndex, and how to connect LlamaIndex to an existing Weaviate cluster. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/data-loaders-episode1/episode1.ipynb) | | Indexes in LlamaIndex | Learn about the various indexes you can build in LlamaIndex. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/indexes-episode2/indexes-in-llamaindex.ipynb) | | Recursive Query Engine | Learn how to build a recursive query engine. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/recursive-query-engine/recursive-retrieval.ipynb) | | Self Correcting Query Engine | Setup your vector store and build a self-correcting query engine. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/self-correcting-query-engine/self-correcting.ipynb) | | Simple Query Engine | Build a simple query engine | [Notebook](https://github.com/weaviate/recipes/tree/main/integrations/llm-frameworks/llamaindex/simple-query-engine) | | SQL Router Query Engine | Build a SQL Query Engine to search through your vector and SQL database. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/sql-router-query-engine/sql-query-router.ipynb) | | Sub-Question Query Engine | Build a query engine that will break down a complex question into multiple parts. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/sub-question-query-engine/sub_question_query_enginev1.ipynb) | -| Advanced RAG | This notebook walks your through an advanced Retrieval-Augmented Generation (RAG) pipeline using LlamaIndex and Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/retrieval-augmented-generation/advanced_rag.ipynb) | -| Naive RAG | This notebook walks your through a naive Retrieval-Augmented Generation (RAG) pipeline using LlamaIndex and Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/retrieval-augmented-generation/naive_rag.ipynb) +| Advanced RAG | This notebook walks you through an advanced Retrieval-Augmented Generation (RAG) pipeline using LlamaIndex and Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/retrieval-augmented-generation/advanced_rag.ipynb) | +| Naive RAG | This notebook walks you through a naive Retrieval-Augmented Generation (RAG) pipeline using LlamaIndex and Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/llamaindex/retrieval-augmented-generation/naive_rag.ipynb) ### Read and Listen | Topic | Description | Resource | | --- | --- | --- | -| Episode 1: Data Loading | This episode will show you how to connect your data to LlamaIndex and Weaviate.| [Video](https://youtu.be/Bu9skgCrJY8?feature=shared) | -| Indexes in LlamaIndex | We cover the three indexes (Vector Store Index, List Index, and Tree Index) and walk through the architecture design. The video ends with a demo using the Vector Store Index and List Index. | [Video](https://youtu.be/6pLgOJrFL38?feature=shared) | +| Episode 1: Data Loading | This episode shows you how to connect your data to LlamaIndex and Weaviate.| [Video](https://youtu.be/Bu9skgCrJY8?feature=shared) | +| Indexes in LlamaIndex | The video covers the three LlamaIndex indexes (Vector Store Index, List Index, and Tree Index) and walks through the architecture design. The video ends with a demo using the Vector Store Index and List Index. | [Video](https://youtu.be/6pLgOJrFL38?feature=shared) | | Episode 3: RAG Techniques in LlamaIndex | Learn about four query engines implemented in LlamaIndex. | [Video](https://youtu.be/Su-ROQMaiaw?feature=shared) | | LlamaIndex and Weaviate Blog | An introduction on LlamaIndex and an overview of the integration. | [Blog](https://weaviate.io/blog/llamaindex-and-weaviate) | diff --git a/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md b/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md index c3e436d6e0..9b40488e53 100644 --- a/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md +++ b/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md @@ -2,7 +2,7 @@ title: Semantic Kernel sidebar_position: 6 --- -Semantic Kernel is an LLM framework developed by Microsoft. Semantic Kernel facilitates building LLM applications with abstractions such as `plugins`, `memory`, `planners`, and more! +[Semantic Kernel](https://learn.microsoft.com/en-us/semantic-kernel/) is an LLM framework developed by Microsoft. Semantic Kernel facilitates building LLM applications with abstractions such as `plugins`, `memory`, `planners`, and more! ## Semantic Kernel and Weaviate Weaviate is a supported vector store in Semantic Kernel. @@ -18,9 +18,9 @@ The resources are broken into two categories: | Topic | Description | Resource | | --- | --- | --- | -| RAG Chatbot with Semantic Kernel | Implements a simple workflow of retrieve then generate. using semantic kernel to help with prompt engineering and orchestrating OpenAI API calls and Weaviate as knowledgebase from which to retreive semantically relevant context. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/semantic-kernel/dotnet/Chatbot_RAG_Weaviate.ipynb) | -| Retrieval Augmented Generation using Weaviate and SK | Implements a simple workflow of retrieve then generate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/semantic-kernel/RetrievalAugmentedGeneration_Weaviate.ipynb) | -| Weasviate Persistent Memory | This notebook shows how to replace the `VolatileMemoryStore` memory storage with a `WeaviateMemoryStore` persistent memory. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/semantic-kernel/weaviate-persistent-memory.ipynb) | +| RAG Chatbot with Semantic Kernel | Implements a simple workflow of retrieve-then-generate. Use a semantic kernel for prompt engineering, orchestrating OpenAI API calls, and integrating Weaviate. Use Weavate as a knowledge base to retrieve semantically relevant context. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/semantic-kernel/dotnet/Chatbot_RAG_Weaviate.ipynb) | +| Retrieval Augmented Generation using Weaviate and SK | Implements a simple workflow of retrieve-then-generate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/semantic-kernel/RetrievalAugmentedGeneration_Weaviate.ipynb) | +| Weaviate Persistent Memory | This notebook shows how to replace `VolatileMemoryStore` memory storage with a `WeaviateMemoryStore` persistent memory. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/semantic-kernel/weaviate-persistent-memory.ipynb) | ### Read and Listen diff --git a/developers/integrations/operations/arize/index.md b/developers/integrations/operations/arize/index.md index 2c259024a7..1bfa44376d 100644 --- a/developers/integrations/operations/arize/index.md +++ b/developers/integrations/operations/arize/index.md @@ -4,10 +4,12 @@ sidebar_position: 1 image: og/integrations/home.jpg --- -Phoenix is an open-source tool for tracing and evaluation built by [Arize AI](https://arize.com/). +[Arize AI](https://arize.com/) created Phoenix, an open-source tool for tracing and evaluation. ## Arize and Weaviate -You can log search queries sent to Weaviate, or requests to LLM providers through the OpenTelemetry into Phoenix. Phoenix provides a data visualization UI and additional APIs for accessing logged data. +You can use OpenTelemetry to log search queries sent to Weaviate and requests sent to LLM providers in Phoenix. + +Phoenix provides a data visualization UI and additional APIs for accessing logged data. ## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. diff --git a/developers/integrations/operations/index.md b/developers/integrations/operations/index.md index 70277ea974..2b7fcc1356 100644 --- a/developers/integrations/operations/index.md +++ b/developers/integrations/operations/index.md @@ -4,7 +4,7 @@ sidebar_position: 5 image: og/integrations/home.jpg --- -The following integrations with Weaviate facilitate operations associated with running Vector Database applications. +These operational integrations make it easier to monitor and evaluate AI Native applications. For example, Vector Databases are typically paired with Large Language Models in Retrieval-Augmented Generation systems. To help monitor these applications in productions, several tools have emerged with user interface and logging services. diff --git a/developers/integrations/operations/langtrace/index.md b/developers/integrations/operations/langtrace/index.md index f3086fbcc7..368da946a6 100644 --- a/developers/integrations/operations/langtrace/index.md +++ b/developers/integrations/operations/langtrace/index.md @@ -4,10 +4,10 @@ sidebar_position: 2 image: og/integrations/home.jpg --- -[Langtrace](https://langtrace.ai/) is an open-source project that uses Open Telemetry observability. +[Langtrace](https://langtrace.ai/) is an open-source project that uses OpenTelemetry for observability. ## Langtrace and Weaviate -The integration allows you to view vector search and generative calls made to your Weaviate cluster. +This integration allows you to view vector search queries and generative calls that are made to your Weaviate cluster. ## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. diff --git a/developers/integrations/operations/langwatch/index.md b/developers/integrations/operations/langwatch/index.md index ce4814f6a5..1de4a1caab 100644 --- a/developers/integrations/operations/langwatch/index.md +++ b/developers/integrations/operations/langwatch/index.md @@ -3,10 +3,12 @@ title: Langwatch sidebar_position: 3 image: og/integrations/home.jpg --- -[LangWatch](https://langwatch.ai/) is an LLM operations platform offering tools to control the quality of your AI application. +[LangWatch](https://langwatch.ai/) is an LLM operations platform that offers tools to control the quality of your AI application. ## LangWatch and Weaviate -Connect to your Weaviate instance to log the traces. It also connects to DSPy to track the performance of each prompt paraphrasing. +Connect LangWatch to your Weaviate instance to log operational traces. + +LangWatch also connects to DSPy to track the performance of each prompt paraphrasing. ## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. diff --git a/developers/integrations/operations/nomic/index.md b/developers/integrations/operations/nomic/index.md index d53aa8c382..13ed872ff3 100644 --- a/developers/integrations/operations/nomic/index.md +++ b/developers/integrations/operations/nomic/index.md @@ -3,10 +3,10 @@ title: Nomic sidebar_position: 3 image: og/integrations/home.jpg --- -[Nomic AI's] Atlas is a visualization tool for vector embeddings. This describes reducing the dimensionality of high-dimensional vectors into 2 or 3 dimensions with algorithms such as t-SNE, UMAP, or PCA. These vectors can then be easily visualized by humans in scatter plots. +[Nomic AI's](https://www.nomic.ai/) Atlas uses algorithms such as t-SNE, UMAP, or PCA to reduce high-dimensional vectors into 2 or 3 dimensions. The lower dimensional vectors are useful for visualizing vector embeddings. ## Nomic and Weaviate -Connect to your Weaviate cluster to visualize the embeddings in your collection. +Connect Nomic to your Weaviate cluster to visualize the embeddings in your collection. ## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. diff --git a/developers/integrations/operations/ragas/index.md b/developers/integrations/operations/ragas/index.md index 5e293d4c7d..75d8cf71fa 100644 --- a/developers/integrations/operations/ragas/index.md +++ b/developers/integrations/operations/ragas/index.md @@ -6,12 +6,14 @@ image: og/integrations/home.jpg [Ragas](https://docs.ragas.io/en/stable/) is a framework to help you evaluate your retrieval augmented generation (RAG) applications. ## Ragas and Weaviate -You'll need to store the `question`, `answer`, `ground_truths`, and `contexts` in a json to load it into Ragas. The Ragas metrics are: +The Ragas metrics are: * faithfulness * answer_relevancy * context_precision * context_recall +To use Ragas, you'll need to store the `question`, `answer`, `ground_truths`, and `contexts` in a json to send to Ragas. + ## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. diff --git a/developers/integrations/operations/wandb/index.md b/developers/integrations/operations/wandb/index.md index 4c6f71a38c..20305545a8 100644 --- a/developers/integrations/operations/wandb/index.md +++ b/developers/integrations/operations/wandb/index.md @@ -4,10 +4,10 @@ sidebar_position: 5 image: og/integrations/home.jpg --- -[Weights and Biases(W&B)](https://wandb.ai/site) is an AI developer platform with products such as `Models` and `Weave`. Weights and Biases is famous for `Models` and machine learning model training visualizations such as `runs` and `sweeps`. +[Weights and Biases(W&B)](https://wandb.ai/site) is an AI developer platform with products such as `Models` and `Weave`. ## Weights and Biases and Weaviate -`Weave` from W&B offers a user interface and data analysis APIs for monitoring applications using LLM, RAG, Agents, and Vector Databases. +`Weave` has a user interface and data analysis APIs for monitoring applications that use LLM, RAG, Agents, and Vector Databases. ## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. From d1dca4891f776881114269e30e9c815b05df3121 Mon Sep 17 00:00:00 2001 From: daveatweaviate <144175318+daveatweaviate@users.noreply.github.com> Date: Fri, 30 Aug 2024 18:43:37 -0400 Subject: [PATCH 29/35] Merge conflict, minor tweaks --- .../integrations/data-platforms/firecrawl/index.md | 10 +++++----- .../llm-frameworks/langchain/langchain.md | 14 +++++++------- developers/integrations/operations/arize/index.md | 6 +++--- .../integrations/operations/langtrace/index.md | 6 +++--- developers/integrations/operations/ragas/index.md | 10 +++++----- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/developers/integrations/data-platforms/firecrawl/index.md b/developers/integrations/data-platforms/firecrawl/index.md index 84686ba518..6649fdbc58 100644 --- a/developers/integrations/data-platforms/firecrawl/index.md +++ b/developers/integrations/data-platforms/firecrawl/index.md @@ -4,18 +4,18 @@ sidebar_position: 3 image: og/integrations/home.jpg --- -[Firecrawl](https://www.firecrawl.dev/) is an AI first web scraping tool. +[Firecrawl](https://www.firecrawl.dev/) is an AI-first web scraping tool. -It allows you to easily crawl and extract clean, structured data from websites. It is an API service that converts a URL into clean markdown or structured data. +It allows you to easily crawl and extract clean, structured data from websites. It is an API service that converts a URL into clean markdown or structured data. -## Firecrawl and Weaviate +## Firecrawl and Weaviate Firecrawl handles the complexities of web scraping like proxies, caching, rate limits, and dynamic content. It produces markdown or JSON formatted output that is ready to be ingested into vector databases like Weaviate. -## Our Resources +## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. ### Hands on Learning -| Topic | Description | Resource | +| Topic | Description | Resource | | --- | --- | --- | | Firecrawl to Weaviate | This notebook shows you how to scrape webpages with Firecrawl and load their contents into Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/data-platforms/web-search/firecrawl/firecrawl-to-weaviate.ipynb) \ No newline at end of file diff --git a/developers/integrations/llm-frameworks/langchain/langchain.md b/developers/integrations/llm-frameworks/langchain/langchain.md index ce36974266..b0e0021c99 100644 --- a/developers/integrations/llm-frameworks/langchain/langchain.md +++ b/developers/integrations/llm-frameworks/langchain/langchain.md @@ -5,8 +5,8 @@ sidebar_position: 4 [LangChain](https://python.langchain.com/v0.2/docs/introduction/) is a framework for building applications that use large language models (LLMs). -## LangChain and Weaviate -Weaviate is a supported [vector store](https://python.langchain.com/v0.2/docs/integrations/vectorstores/weaviate/#step-1-data-import) in LangChain. You will need a running Weaviate cluster (any deployment) to use the integration. +## LangChain and Weaviate +Weaviate is a supported [vector store](https://python.langchain.com/v0.2/docs/integrations/vectorstores/weaviate/#step-1-data-import) in LangChain. You will need a running Weaviate cluster to use the integration. Connect LangChain to your Weaviate cluster: ```python @@ -14,23 +14,23 @@ weaviate_client = weaviate.connect_to_local() db = WeaviateVectorStore.from_documents(docs, embeddings, client=weaviate_client) ``` -## Our Resources -The resources are broken into two categories: +## Our Resources +The resources are broken into two categories: 1. [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. 2. [**Read and Listen**](#read-and-listen): Develop your conceptual understanding of these technologies. ### Hands on Learning -| Topic | Description | Resource | +| Topic | Description | Resource | | --- | --- | --- | | LangChain LCEL | A notebook that defines a language program with LangChain LCEL, compiles it with DSPy, and converts it back to LangChain LCEL. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/langchain/LCEL/RAG-with-LangChain-LCEL-and-DSPy.ipynb) | | LangChain and Multi-Tenancy | Build a multi-language RAG by multiple PDFs per tenant with Langchain, OpenAI, and Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/langchain/loading-data/langchain-simple-pdf-multitenant.ipynb) | | Multi-Language RAG | Simple notebook showing you how to build a RAG application using LangChain and Weaviate. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/llm-frameworks/langchain/loading-data/langchain-simple-pdf.ipynb) | -### Read and Listen -| Topic | Description | Resource | +### Read and Listen +| Topic | Description | Resource | | --- | --- | --- | | Combining LangChain and Weaviate | Learn about how Weaviate is integrated in LangChain and the different `CombineDocuments` techniques. | [Blog](https://weaviate.io/blog/combining-langchain-and-weaviate) | | Weaviate Podcast #36 | LangChain and Weaviate with Harrison Chase and Bob van Luijt | [Podcast](https://www.youtube.com/watch?v=lhby7Ql7hbk) | diff --git a/developers/integrations/operations/arize/index.md b/developers/integrations/operations/arize/index.md index 1bfa44376d..2e264f2e6b 100644 --- a/developers/integrations/operations/arize/index.md +++ b/developers/integrations/operations/arize/index.md @@ -7,15 +7,15 @@ image: og/integrations/home.jpg [Arize AI](https://arize.com/) created Phoenix, an open-source tool for tracing and evaluation. ## Arize and Weaviate -You can use OpenTelemetry to log search queries sent to Weaviate and requests sent to LLM providers in Phoenix. +You can use [OpenTelemetry](https://opentelemetry.io/) to log search queries sent to Weaviate and requests sent to LLM providers in Phoenix. Phoenix provides a data visualization UI and additional APIs for accessing logged data. -## Our Resources +## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. ### Hands on Learning -| Topic | Description | Resource | +| Topic | Description | Resource | | --- | --- | --- | | DSPy Instrumentor | Log calls sent to DSPy using Phoenix | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/observability-and-evaluation/arize/DSPy-Instrumentor.py) | \ No newline at end of file diff --git a/developers/integrations/operations/langtrace/index.md b/developers/integrations/operations/langtrace/index.md index 368da946a6..b6b3454308 100644 --- a/developers/integrations/operations/langtrace/index.md +++ b/developers/integrations/operations/langtrace/index.md @@ -4,16 +4,16 @@ sidebar_position: 2 image: og/integrations/home.jpg --- -[Langtrace](https://langtrace.ai/) is an open-source project that uses OpenTelemetry for observability. +[Langtrace](https://langtrace.ai/) is an open-source project that uses [OpenTelemetry](https://opentelemetry.io/) for observability. ## Langtrace and Weaviate This integration allows you to view vector search queries and generative calls that are made to your Weaviate cluster. -## Our Resources +## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. ### Hands on Learning -| Topic | Description | Resource | +| Topic | Description | Resource | | --- | --- | --- | | Weaviate and Langtrace Observability | View the vector and generative calls made to your application. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/observability-and-evaluation/langtrace/weaviate_observability.ipynb) | \ No newline at end of file diff --git a/developers/integrations/operations/ragas/index.md b/developers/integrations/operations/ragas/index.md index 75d8cf71fa..f6f6865223 100644 --- a/developers/integrations/operations/ragas/index.md +++ b/developers/integrations/operations/ragas/index.md @@ -5,21 +5,21 @@ image: og/integrations/home.jpg --- [Ragas](https://docs.ragas.io/en/stable/) is a framework to help you evaluate your retrieval augmented generation (RAG) applications. -## Ragas and Weaviate +## Ragas and Weaviate The Ragas metrics are: * faithfulness * answer_relevancy * context_precision * context_recall -To use Ragas, you'll need to store the `question`, `answer`, `ground_truths`, and `contexts` in a json to send to Ragas. +To use Ragas, you'll need to store the `question`, `answer`, `ground_truths`, and `contexts` in a json object to send to Ragas. -## Our Resources +## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. ### Hands on Learning -| Topic | Description | Resource | +| Topic | Description | Resource | | --- | --- | --- | -| Introduction Ragas Demo | Learn how to use Weaviate and Ragas | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/observability-and-evaluation/ragas/ragas-demo.ipynb) | +| Introduction Ragas Demo | Learn how to use Weaviate and Ragas | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/observability-and-evaluation/ragas/ragas-demo.ipynb) | | Ragas and LangChain | Learn how to connect Ragas and LangChain. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/observability-and-evaluation/ragas/RAGAs-RAG-langchain.ipynb) | \ No newline at end of file From 4f44ecd1f81be9e9e6b8628b0ba5b1627b0ddc85 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:04:18 -0400 Subject: [PATCH 30/35] Add Aryn to Docs --- .../integrations/data-platforms/aryn/index.md | 36 +++++++++++++++++++ .../integrations/data-platforms/index.md | 3 +- developers/integrations/index.md | 2 +- 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 developers/integrations/data-platforms/aryn/index.md diff --git a/developers/integrations/data-platforms/aryn/index.md b/developers/integrations/data-platforms/aryn/index.md new file mode 100644 index 0000000000..76e65c2016 --- /dev/null +++ b/developers/integrations/data-platforms/aryn/index.md @@ -0,0 +1,36 @@ +--- +title: Aryn +sidebar_position: 1 +image: og/integrations/home.jpg +--- + +[Aryn](https://www.aryn.ai/) is an AI powered ETL system for language model applications and vector databases. + +Aryn offers two components: +* [Aryn Partitioning Service](https://sycamore.readthedocs.io/en/stable/aryn_cloud/accessing_the_partitioning_service.html) +* [Sycamore](https://github.com/aryn-ai/sycamore) + +## Aryn and Weaviate +Weaviate is a supported [connector](https://sycamore.readthedocs.io/en/stable/sycamore/connectors/weaviate.html) in Aryn. + +You can: +1. [Write to Weaviate](https://sycamore.readthedocs.io/en/stable/sycamore/connectors/weaviate.html#writing-to-weaviate) with `write.weaviate()` +2. [Read from Weaviate](https://sycamore.readthedocs.io/en/stable/sycamore/connectors/weaviate.html#reading-from-weaviate) with `read.weaviate()` + +## Our Resources +The resources are broken into two categories: +1. [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. + +2. [**Read and Listen**](#read-and-listen): Develop your conceptual understanding of these technologies. + +### Hands on Learning + +| Topic | Description | Resource | +| --- | --- | --- | +| Using Aryn to ingest data into Weaviate | Demo on how to prepare and load data into Weaviate using Sycamore. | [Notebook](https://github.com/weaviate/recipes/blob/main/integrations/data-platforms/aryn/weaviate_blog_post.ipynb) | + +### Read and Listen +| Topic | Description | Resource | +| --- | --- | --- | +| Enriching and Ingesting Data into Weaviate with Aryn | Demo on how to ingest PDFs into Weaviate using Aryn. | [Blog](/blog/sycamore-and-weaviate) | + diff --git a/developers/integrations/data-platforms/index.md b/developers/integrations/data-platforms/index.md index 452bb52772..97d83e93b3 100644 --- a/developers/integrations/data-platforms/index.md +++ b/developers/integrations/data-platforms/index.md @@ -7,8 +7,9 @@ image: og/integrations/home.jpg Data Platforms offer robust solutions for managing, processing, and analyzing large volumes of data. These platforms provide tools and services that facilitate seamless data ingestion directly into Weaviate. Learn about how Weaviate integrates with these solutions: +* [Aryn](/developers/integrations/data-platforms/aryn/) * [Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud) * [Context Data](/developers/integrations/data-platforms/context-data/) +* [Firecrawl](/developers/integrations/data-platforms/firecrawl/) * [Spark](/developers/integrations/data-platforms/spark) * [Unstructured](/developers/integrations/data-platforms/unstructured) -* [Firecrawl](/developers/integrations/data-platforms/firecrawl/) \ No newline at end of file diff --git a/developers/integrations/index.md b/developers/integrations/index.md index 74ea785cdf..81a3723c57 100644 --- a/developers/integrations/index.md +++ b/developers/integrations/index.md @@ -32,6 +32,6 @@ The ecosystem is divided into these categories: |------------------|-----------| | Cloud Hyperscalers | [Google](/developers/integrations/cloud-hyperscalers/google), [AWS](/developers/integrations/cloud-hyperscalers/aws)| | Compute Infrastructure | [Modal](/developers/integrations/compute-infrastructure/modal), [Replicate](/developers/integrations/compute-infrastructure/replicate) | -| Data Platforms |[Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud), [Context Data](/developers/integrations/data-platforms/context-data/), [Firecrawl](/developers/integrations/data-platforms/firecrawl), [Spark](/developers/integrations/data-platforms/spark), [Unstructured](/developers/integrations/data-platforms/unstructured) | +| Data Platforms |[Aryn](/developers/integrations/data-platforms/aryn/), [Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud), [Context Data](/developers/integrations/data-platforms/context-data/), [Firecrawl](/developers/integrations/data-platforms/firecrawl), [Spark](/developers/integrations/data-platforms/spark), [Unstructured](/developers/integrations/data-platforms/unstructured) | | LLM Frameworks | [Composio](/developers/integrations/llm-frameworks/composio/), [DSPy](/developers/integrations/llm-frameworks/dspy/), [LangChain](/developers/integrations/llm-frameworks/langchain/), [LlamaIndex](/developers/integrations/llm-frameworks/llamaindex/), [Semantic Kernel](/developers/integrations/llm-frameworks/semantic-kernel/) | | Operations | [Arize](/developers/integrations/operations/arize/), [Langtrace](/developers/integrations/operations/langtrace/), [LangWatch](/developers/integrations/operations/langwatch/), [Nomic](/developers/integrations/operations/nomic/), [Ragas](/developers/integrations/operations/ragas/), [Weights & Biases](/developers/integrations/operations/wandb/) | \ No newline at end of file From 2c46dc6e86570bbed77775274d9c2def14cfe7dd Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:11:45 -0400 Subject: [PATCH 31/35] Add callout to OG documentation --- developers/integrations/index.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/developers/integrations/index.md b/developers/integrations/index.md index 81a3723c57..6cc23dcaf7 100644 --- a/developers/integrations/index.md +++ b/developers/integrations/index.md @@ -34,4 +34,9 @@ The ecosystem is divided into these categories: | Compute Infrastructure | [Modal](/developers/integrations/compute-infrastructure/modal), [Replicate](/developers/integrations/compute-infrastructure/replicate) | | Data Platforms |[Aryn](/developers/integrations/data-platforms/aryn/), [Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud), [Context Data](/developers/integrations/data-platforms/context-data/), [Firecrawl](/developers/integrations/data-platforms/firecrawl), [Spark](/developers/integrations/data-platforms/spark), [Unstructured](/developers/integrations/data-platforms/unstructured) | | LLM Frameworks | [Composio](/developers/integrations/llm-frameworks/composio/), [DSPy](/developers/integrations/llm-frameworks/dspy/), [LangChain](/developers/integrations/llm-frameworks/langchain/), [LlamaIndex](/developers/integrations/llm-frameworks/llamaindex/), [Semantic Kernel](/developers/integrations/llm-frameworks/semantic-kernel/) | -| Operations | [Arize](/developers/integrations/operations/arize/), [Langtrace](/developers/integrations/operations/langtrace/), [LangWatch](/developers/integrations/operations/langwatch/), [Nomic](/developers/integrations/operations/nomic/), [Ragas](/developers/integrations/operations/ragas/), [Weights & Biases](/developers/integrations/operations/wandb/) | \ No newline at end of file +| Operations | [Arize](/developers/integrations/operations/arize/), [Langtrace](/developers/integrations/operations/langtrace/), [LangWatch](/developers/integrations/operations/langwatch/), [Nomic](/developers/integrations/operations/nomic/), [Ragas](/developers/integrations/operations/ragas/), [Weights & Biases](/developers/integrations/operations/wandb/) | + +## Model Provider Integrations +Weaviate integrates with many self-hosted and API-based models from a range of providers. + +Refer to the [documentation page](/developers/weaviate/model-providers) to see the full list of model providers. \ No newline at end of file From 91697bcbc007c26a482268cecb130205f3f80d95 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:25:12 -0400 Subject: [PATCH 32/35] Final walkthrough --- developers/integrations/compute-infrastructure/modal/index.md | 2 +- developers/integrations/data-platforms/context-data/index.md | 2 +- developers/integrations/data-platforms/firecrawl/index.md | 2 +- developers/integrations/data-platforms/spark/index.md | 2 +- developers/integrations/index.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/developers/integrations/compute-infrastructure/modal/index.md b/developers/integrations/compute-infrastructure/modal/index.md index ee9fde516a..4a1555da1d 100644 --- a/developers/integrations/compute-infrastructure/modal/index.md +++ b/developers/integrations/compute-infrastructure/modal/index.md @@ -6,7 +6,7 @@ sidebar_position: 1 [Modal](https://modal.com/) provides a serverless platform that has on-demand access to GPUs and a custom high-performance container runtime. Use Modal to easily deploy and automatically scale high-performance applications. ## Modal and Weaviate -Weaviate leverages Modal's serverless infrastructure for fast embedding generation and for fast generative model calls. +Weaviate leverages Modal's serverless infrastructure for fast embedding generation and generative model calls. To dynamically scale your application based on workload demands, [host the Weaviate client](https://modal.com/docs/examples/vector-analogies-wikipedia#deploy-a-serverless-read-only-weaviate-client-with-modal) on Modal. diff --git a/developers/integrations/data-platforms/context-data/index.md b/developers/integrations/data-platforms/context-data/index.md index 9102af147e..004df29721 100644 --- a/developers/integrations/data-platforms/context-data/index.md +++ b/developers/integrations/data-platforms/context-data/index.md @@ -13,7 +13,7 @@ VectorETL by [Context Data](https://contextdata.ai/) is a modular no-code Python ## Context Data and Weaviate Weaviate is a [target connection](https://context-data.gitbook.io/context-data-1/adding-target-connections#add-a-weaviate-target-connection) in Context Data. -To connect to ContextData, open the console and input your Weaviate instance's URL and authentication credentials when prompted. +To connect to Context Data, open the console and input your Weaviate instance's URL and authentication credentials when prompted. ## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. diff --git a/developers/integrations/data-platforms/firecrawl/index.md b/developers/integrations/data-platforms/firecrawl/index.md index 6649fdbc58..6f550933c7 100644 --- a/developers/integrations/data-platforms/firecrawl/index.md +++ b/developers/integrations/data-platforms/firecrawl/index.md @@ -9,7 +9,7 @@ image: og/integrations/home.jpg It allows you to easily crawl and extract clean, structured data from websites. It is an API service that converts a URL into clean markdown or structured data. ## Firecrawl and Weaviate - Firecrawl handles the complexities of web scraping like proxies, caching, rate limits, and dynamic content. It produces markdown or JSON formatted output that is ready to be ingested into vector databases like Weaviate. +Firecrawl handles the complexities of web scraping like proxies, caching, rate limits, and dynamic content. It produces markdown or JSON formatted output that is ready to be ingested into vector databases like Weaviate. ## Our Resources [**Hands on Learning**](#hands-on-learning): Build your technical understanding with end-to-end tutorials. diff --git a/developers/integrations/data-platforms/spark/index.md b/developers/integrations/data-platforms/spark/index.md index e8d5b6187e..6349ac75ee 100644 --- a/developers/integrations/data-platforms/spark/index.md +++ b/developers/integrations/data-platforms/spark/index.md @@ -9,7 +9,7 @@ image: og/integrations/home.jpg ## Spark and Weaviate The Spark connector enables you to easily ingest data from Spark data structures into Weaviate. -Learn more about the connector in the Weaviate[ Spark connector repository](https://github.com/weaviate/spark-connector). +Learn more about the connector in the [Weaviate Spark connector repository](https://github.com/weaviate/spark-connector). ## Our Resources The resources are broken into two categories: diff --git a/developers/integrations/index.md b/developers/integrations/index.md index 6cc23dcaf7..39443e526a 100644 --- a/developers/integrations/index.md +++ b/developers/integrations/index.md @@ -37,6 +37,6 @@ The ecosystem is divided into these categories: | Operations | [Arize](/developers/integrations/operations/arize/), [Langtrace](/developers/integrations/operations/langtrace/), [LangWatch](/developers/integrations/operations/langwatch/), [Nomic](/developers/integrations/operations/nomic/), [Ragas](/developers/integrations/operations/ragas/), [Weights & Biases](/developers/integrations/operations/wandb/) | ## Model Provider Integrations -Weaviate integrates with many self-hosted and API-based models from a range of providers. +Weaviate integrates with self-hosted and API-based embedding models from a range of providers. Refer to the [documentation page](/developers/weaviate/model-providers) to see the full list of model providers. \ No newline at end of file From 9dcbcbf2adfcfcfb10e935cbb7c65fe6708355e3 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:49:10 -0400 Subject: [PATCH 33/35] Final edits --- .../integrations/compute-infrastructure/modal/index.md | 4 +++- developers/integrations/index.md | 4 ++-- developers/integrations/operations/langwatch/index.md | 2 +- developers/integrations/operations/ragas/index.md | 8 ++++---- developers/integrations/operations/wandb/index.md | 4 ++-- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/developers/integrations/compute-infrastructure/modal/index.md b/developers/integrations/compute-infrastructure/modal/index.md index 4a1555da1d..0626112f3a 100644 --- a/developers/integrations/compute-infrastructure/modal/index.md +++ b/developers/integrations/compute-infrastructure/modal/index.md @@ -3,7 +3,9 @@ title: Modal sidebar_position: 1 --- -[Modal](https://modal.com/) provides a serverless platform that has on-demand access to GPUs and a custom high-performance container runtime. Use Modal to easily deploy and automatically scale high-performance applications. +[Modal](https://modal.com/) provides a serverless platform that has on-demand access to GPUs and a custom high-performance container runtime. + +Use Modal to easily deploy and automatically scale high-performance applications. ## Modal and Weaviate Weaviate leverages Modal's serverless infrastructure for fast embedding generation and generative model calls. diff --git a/developers/integrations/index.md b/developers/integrations/index.md index 39443e526a..8046db1484 100644 --- a/developers/integrations/index.md +++ b/developers/integrations/index.md @@ -30,10 +30,10 @@ The ecosystem is divided into these categories: | Company Category | Companies | |------------------|-----------| -| Cloud Hyperscalers | [Google](/developers/integrations/cloud-hyperscalers/google), [AWS](/developers/integrations/cloud-hyperscalers/aws)| +| Cloud Hyperscalers | [AWS](/developers/integrations/cloud-hyperscalers/aws), [Google](/developers/integrations/cloud-hyperscalers/google)| | Compute Infrastructure | [Modal](/developers/integrations/compute-infrastructure/modal), [Replicate](/developers/integrations/compute-infrastructure/replicate) | | Data Platforms |[Aryn](/developers/integrations/data-platforms/aryn/), [Confluent Cloud](/developers/integrations/data-platforms/confluent-cloud), [Context Data](/developers/integrations/data-platforms/context-data/), [Firecrawl](/developers/integrations/data-platforms/firecrawl), [Spark](/developers/integrations/data-platforms/spark), [Unstructured](/developers/integrations/data-platforms/unstructured) | -| LLM Frameworks | [Composio](/developers/integrations/llm-frameworks/composio/), [DSPy](/developers/integrations/llm-frameworks/dspy/), [LangChain](/developers/integrations/llm-frameworks/langchain/), [LlamaIndex](/developers/integrations/llm-frameworks/llamaindex/), [Semantic Kernel](/developers/integrations/llm-frameworks/semantic-kernel/) | +| LLM Frameworks | [Composio](/developers/integrations/llm-frameworks/composio/), [DSPy](/developers/integrations/llm-frameworks/dspy/), [Haystack](/developers/integrations/llm-frameworks/haystack/), [LangChain](/developers/integrations/llm-frameworks/langchain/), [LlamaIndex](/developers/integrations/llm-frameworks/llamaindex/), [Semantic Kernel](/developers/integrations/llm-frameworks/semantic-kernel/) | | Operations | [Arize](/developers/integrations/operations/arize/), [Langtrace](/developers/integrations/operations/langtrace/), [LangWatch](/developers/integrations/operations/langwatch/), [Nomic](/developers/integrations/operations/nomic/), [Ragas](/developers/integrations/operations/ragas/), [Weights & Biases](/developers/integrations/operations/wandb/) | ## Model Provider Integrations diff --git a/developers/integrations/operations/langwatch/index.md b/developers/integrations/operations/langwatch/index.md index 1de4a1caab..32ebf28029 100644 --- a/developers/integrations/operations/langwatch/index.md +++ b/developers/integrations/operations/langwatch/index.md @@ -1,5 +1,5 @@ --- -title: Langwatch +title: LangWatch sidebar_position: 3 image: og/integrations/home.jpg --- diff --git a/developers/integrations/operations/ragas/index.md b/developers/integrations/operations/ragas/index.md index f6f6865223..5e97a8e96f 100644 --- a/developers/integrations/operations/ragas/index.md +++ b/developers/integrations/operations/ragas/index.md @@ -7,10 +7,10 @@ image: og/integrations/home.jpg ## Ragas and Weaviate The Ragas metrics are: -* faithfulness -* answer_relevancy -* context_precision -* context_recall +* `faithfulness` +* `answer_relevancy` +* `context_precision` +* `context_recall` To use Ragas, you'll need to store the `question`, `answer`, `ground_truths`, and `contexts` in a json object to send to Ragas. diff --git a/developers/integrations/operations/wandb/index.md b/developers/integrations/operations/wandb/index.md index 20305545a8..8a91500436 100644 --- a/developers/integrations/operations/wandb/index.md +++ b/developers/integrations/operations/wandb/index.md @@ -1,10 +1,10 @@ --- -title: Weights and Biases +title: Weights & Biases sidebar_position: 5 image: og/integrations/home.jpg --- -[Weights and Biases(W&B)](https://wandb.ai/site) is an AI developer platform with products such as `Models` and `Weave`. +[Weights & Biases (W&B)](https://wandb.ai/site) is an AI developer platform with products such as `Models` and `Weave`. ## Weights and Biases and Weaviate `Weave` has a user interface and data analysis APIs for monitoring applications that use LLM, RAG, Agents, and Vector Databases. From 44a351c15f7aaba061e763dedee7ac91eaad7d76 Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:55:21 -0400 Subject: [PATCH 34/35] LlamaIndex Update --- developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md b/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md index e28527f670..a0c70177e1 100644 --- a/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md +++ b/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md @@ -41,6 +41,6 @@ The resources are broken into two categories: | Topic | Description | Resource | | --- | --- | --- | | Episode 1: Data Loading | This episode shows you how to connect your data to LlamaIndex and Weaviate.| [Video](https://youtu.be/Bu9skgCrJY8?feature=shared) | -| Indexes in LlamaIndex | The video covers the three LlamaIndex indexes (Vector Store Index, List Index, and Tree Index) and walks through the architecture design. The video ends with a demo using the Vector Store Index and List Index. | [Video](https://youtu.be/6pLgOJrFL38?feature=shared) | +| Episode 2: Indexes in LlamaIndex | The video covers the three LlamaIndex indexes (Vector Store Index, List Index, and Tree Index) and walks through the architecture design. The video ends with a demo using the Vector Store Index and List Index. | [Video](https://youtu.be/6pLgOJrFL38?feature=shared) | | Episode 3: RAG Techniques in LlamaIndex | Learn about four query engines implemented in LlamaIndex. | [Video](https://youtu.be/Su-ROQMaiaw?feature=shared) | | LlamaIndex and Weaviate Blog | An introduction on LlamaIndex and an overview of the integration. | [Blog](https://weaviate.io/blog/llamaindex-and-weaviate) | From d63b1c481d24d6943b2762fff86340d97a0fa4fe Mon Sep 17 00:00:00 2001 From: Erika Cardenas <110841617+erika-cardenas@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:57:40 -0400 Subject: [PATCH 35/35] rename files --- developers/integrations/llm-frameworks/dspy/{dspy.md => index.md} | 0 .../llm-frameworks/langchain/{langchain.md => index.md} | 0 .../llm-frameworks/llamaindex/{LlamaIndex.md => index.md} | 0 .../semantic-kernel/{semantic-kernel.md => index.md} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename developers/integrations/llm-frameworks/dspy/{dspy.md => index.md} (100%) rename developers/integrations/llm-frameworks/langchain/{langchain.md => index.md} (100%) rename developers/integrations/llm-frameworks/llamaindex/{LlamaIndex.md => index.md} (100%) rename developers/integrations/llm-frameworks/semantic-kernel/{semantic-kernel.md => index.md} (100%) diff --git a/developers/integrations/llm-frameworks/dspy/dspy.md b/developers/integrations/llm-frameworks/dspy/index.md similarity index 100% rename from developers/integrations/llm-frameworks/dspy/dspy.md rename to developers/integrations/llm-frameworks/dspy/index.md diff --git a/developers/integrations/llm-frameworks/langchain/langchain.md b/developers/integrations/llm-frameworks/langchain/index.md similarity index 100% rename from developers/integrations/llm-frameworks/langchain/langchain.md rename to developers/integrations/llm-frameworks/langchain/index.md diff --git a/developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md b/developers/integrations/llm-frameworks/llamaindex/index.md similarity index 100% rename from developers/integrations/llm-frameworks/llamaindex/LlamaIndex.md rename to developers/integrations/llm-frameworks/llamaindex/index.md diff --git a/developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md b/developers/integrations/llm-frameworks/semantic-kernel/index.md similarity index 100% rename from developers/integrations/llm-frameworks/semantic-kernel/semantic-kernel.md rename to developers/integrations/llm-frameworks/semantic-kernel/index.md