From 0ad0a034b01a8c5c0c8ea439cab894d0612c8a3e Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Wed, 30 Apr 2025 10:08:19 +0200 Subject: [PATCH 01/48] WIP --- site/content/3.13/data-science/_index.md | 139 +++++++++--------- .../3.13/data-science/adapters/_index.md | 2 +- .../data-science/arangograph-notebooks.md | 2 +- .../3.13/data-science/graph-analytics.md | 2 +- .../{arangographml => graphml}/_index.md | 58 +++++++- .../{arangographml => graphml}/deploy.md | 2 + .../getting-started.md | 3 +- ...{llm-knowledge-graphs.md => hybrid-rag.md} | 52 ++++++- 8 files changed, 178 insertions(+), 82 deletions(-) rename site/content/3.13/data-science/{arangographml => graphml}/_index.md (79%) rename site/content/3.13/data-science/{arangographml => graphml}/deploy.md (98%) rename site/content/3.13/data-science/{arangographml => graphml}/getting-started.md (99%) rename site/content/3.13/data-science/{llm-knowledge-graphs.md => hybrid-rag.md} (73%) diff --git a/site/content/3.13/data-science/_index.md b/site/content/3.13/data-science/_index.md index c543cebc6e..7311f10dcb 100644 --- a/site/content/3.13/data-science/_index.md +++ b/site/content/3.13/data-science/_index.md @@ -3,32 +3,80 @@ title: Data Science menuTitle: Data Science weight: 115 description: >- - ArangoDB lets you apply analytics and machine learning to graph data at scale + ArangoDB lets you aliases: - data-science/overview --- +ArangoDB provides a wide range of functionality that can be utilized for +data science applications. The core database system includes multi-model storage +of information with scalable graph and information retrieval capabilities that +you can directly use for your research and product development. + +ArangoDB also offers a dedicated Data Science Suite, using the database core +as the foundation for higher-level features. Whether you want to turbocharge +generative AI applications with a GraphRAG solution or apply analytics and +machine learning to graph data at scale, ArangoDB covers these needs. + + + +## Data Science Suite + +The Data Science Suite (DSS) is comprised of three major components: + +- [**HybridRAG**](#hybridrag): A complete solution for extracting entities + from text files to create a knowledge graph that you can then query with a + natural language interface. +- [**GraphML**](#graphml): Apply machine learning to graphs for link prediction, + classification, and similar tasks. +- [**Graph Analytics**](#graph-analytics): Run graph algorithms such as PageRank + on dedicated compute resources. + +Each component has an intuitive graphical user interface integrated into the +ArangoDB Platform web interface, guiding you through the process. + + +Alongside these components, you also get the following additional features: -ArangoDB, as the foundation for GraphML, comes with the following key features: +- **Graph visualizer**: A web-based tool for exploring your graph data with an + intuitive interface and sophisticated querying capabilities. +- **Jupyter notebooks**: Run a Jupyter kernel in the platform for hosting + interactive notebooks for experimentation and development of applications + that use ArangoDB as their backend. +- **MLflow integration**: Built-in support for the popular management tool for + the machine learning lifecycle. +- **Adapters**: Use ArangoDB together with cuGraph, NetworkX, and other tools. +- **Application Programming Interfaces**: Use the underlying APIs of the + Data Science Suite services and build your own integrations. -- **Scalable**: designed to support true scalability with high performance for +## From graph to AI + +This section classifies the complexity of the queries you can answer with +ArangoDB and gives you an overview of the respective feature. + +It starts with running a simple query that shows what is the path that goes from +one node to another, continues with more complex tasks like graph classification, +link prediction, and node classification, and ends with generative AI solutions +powered by graph relationships and vector embeddings. + +### Foundational features + +ArangoDB comes with the following key features: + +- **Scalable**: Designed to support true scalability with high performance for enterprise use cases. -- **Simple Ingestion**: easy integration in existing data infrastructure with +- **Simple Ingestion**: Easy integration in existing data infrastructure with connectors to all leading data processing and data ecosystems. -- **Source-Available**: extensibility and community. -- **NLP Support**: built-in text processing, search, and similarity ranking. - -![ArangoDB Machine Learning Architecture](../../images/machine-learning-architecture.png) +- **Source-Available**: Extensibility and community. +- **NLP Support**: Built-in text processing, search, and similarity ranking. -## Graph Analytics vs. GraphML + -This section classifies the complexity of the queries we can answer - -like running a simple query that shows what is the path that goes from one node -to another, or more complex tasks like node classification, -link prediction, and graph classification. +![ArangoDB Machine Learning Architecture](../../images/machine-learning-architecture.png) ### Graph Queries @@ -69,65 +117,24 @@ GraphML can answer questions like: ![Graph ML](../../images/graph-ml.png) For ArangoDB's enterprise-ready, graph-powered machine learning offering, -see [ArangoGraphML](arangographml/_index.md). - -## Use Cases - -This section contains an overview of different use cases where Graph Analytics -and GraphML can be applied. - -### GraphML - -GraphML capabilities of using more data outperform conventional deep learning -methods and **solve high-computational complexity graph problems**, such as: -- Drug discovery, repurposing, and predicting adverse effects. -- Personalized product/service recommendation. -- Supply chain and logistics. - -With GraphML, you can also **predict relationships and structures**, such as: -- Predict molecules for treating diseases (precision medicine). -- Predict fraudulent behavior, credit risk, purchase of product or services. -- Predict relationships among customers, accounts. - -ArangoDB uses well-known GraphML frameworks like -[Deep Graph Library](https://www.dgl.ai) -and [PyTorch Geometric](https://pytorch-geometric.readthedocs.io/en/latest/) -and connects to these external machine learning libraries. When coupled to -ArangoDB, you are essentially integrating them with your graph dataset. - -## Example: ArangoFlix - -ArangoFlix is a complete movie recommendation application that predicts missing -links between a user and the movies they have not watched yet. - -This [interactive tutorial](https://colab.research.google.com/github/arangodb/interactive_tutorials/blob/master/notebooks/Integrate_ArangoDB_with_PyG.ipynb) -demonstrates how to integrate ArangoDB with PyTorch Geometric to -build recommendation systems using Graph Neural Networks (GNNs). - -The full ArangoFlix demo website is accessible from the ArangoGraph Insights Platform, -the managed cloud for ArangoDB. You can open the demo website that connects to -your running database from the **Examples** tab of your deployment. +see [ArangoGraphML](graphml/_index.md). -{{< tip >}} -You can try out the ArangoGraph Insights Platform free of charge for 14 days. -Sign up at [dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -{{< /tip >}} +### HybridRAG -The ArangoFlix demo uses five different recommendation methods: -- Content-Based using AQL -- Collaborative Filtering using AQL -- Content-Based using ML -- Matrix Factorization -- Graph Neural Networks +HybridRAG is ArangoDB's turn-key solution to turn your organization's data into +a knowledge graph and let everyone utilize the knowledge by asking questions in +natural language. -![ArangoFlix demo](../../images/data-science-arangoflix.png) +HybridRAG combines vector search for retrieving related text snippets +with graph-based retrieval augmented generation (GraphRAG) for context expansion +and relationship discovery. This lets a large language model (LLM) generate +answers that are accurate, context-aware, and chronologically structured. +This approach combats the common problem of hallucination. -The ArangoFlix website not only offers an example of how the user recommendations might -look like in real life, but it also provides information on a recommendation method, -an AQL query, a custom graph visualization for each movie, and more. +To learn more, see the [HybridRAG](hybrid-rag.md) documentation. ## Sample datasets If you want to try out ArangoDB's data science features, you may use the -[`arango_datasets` Python package](../components/tools/arango-datasets.md) +[`arango-datasets` Python package](../components/tools/arango-datasets.md) to load sample datasets into a deployment. diff --git a/site/content/3.13/data-science/adapters/_index.md b/site/content/3.13/data-science/adapters/_index.md index 0aa3efea24..75d8c4558b 100644 --- a/site/content/3.13/data-science/adapters/_index.md +++ b/site/content/3.13/data-science/adapters/_index.md @@ -1,7 +1,7 @@ --- title: Adapters menuTitle: Adapters -weight: 140 +weight: 50 description: >- ArangoDB offers multiple adapters that enable seamless integration with data science tools diff --git a/site/content/3.13/data-science/arangograph-notebooks.md b/site/content/3.13/data-science/arangograph-notebooks.md index 34ca9529be..d6b2a94930 100644 --- a/site/content/3.13/data-science/arangograph-notebooks.md +++ b/site/content/3.13/data-science/arangograph-notebooks.md @@ -1,7 +1,7 @@ --- title: ArangoGraph Notebooks menuTitle: ArangoGraph Notebooks -weight: 130 +weight: 40 description: >- Colocated Jupyter Notebooks within the ArangoGraph Insights Platform --- diff --git a/site/content/3.13/data-science/graph-analytics.md b/site/content/3.13/data-science/graph-analytics.md index 18df401e84..8983a2124e 100644 --- a/site/content/3.13/data-science/graph-analytics.md +++ b/site/content/3.13/data-science/graph-analytics.md @@ -1,7 +1,7 @@ --- title: Graph Analytics menuTitle: Graph Analytics -weight: 123 +weight: 30 description: | ArangoGraph offers Graph Analytics Engines to run graph algorithms on your data separately from your ArangoDB deployments diff --git a/site/content/3.13/data-science/arangographml/_index.md b/site/content/3.13/data-science/graphml/_index.md similarity index 79% rename from site/content/3.13/data-science/arangographml/_index.md rename to site/content/3.13/data-science/graphml/_index.md index 2d5d3324de..96590d719d 100644 --- a/site/content/3.13/data-science/arangographml/_index.md +++ b/site/content/3.13/data-science/graphml/_index.md @@ -1,11 +1,11 @@ --- -title: ArangoGraphML -menuTitle: ArangoGraphML -weight: 125 +title: ArangoGraphML # Rename as well? +menuTitle: GraphML +weight: 20 description: >- Enterprise-ready, graph-powered machine learning as a cloud service or self-managed aliases: - - graphml + - arangographml --- Traditional Machine Learning (ML) overlooks the connections and relationships between data points, which is where graph machine learning excels. However, @@ -13,6 +13,56 @@ accessibility to GraphML has been limited to sizable enterprises equipped with specialized teams of data scientists. ArangoGraphML simplifies the utilization of GraphML, enabling a broader range of personas to extract profound insights from their data. +## Use cases + +GraphML capabilities of using more data outperform conventional deep learning +methods and **solve high-computational complexity graph problems**, such as: +- Drug discovery, repurposing, and predicting adverse effects. +- Personalized product/service recommendation. +- Supply chain and logistics. + +With GraphML, you can also **predict relationships and structures**, such as: +- Predict molecules for treating diseases (precision medicine). +- Predict fraudulent behavior, credit risk, purchase of product or services. +- Predict relationships among customers, accounts. + +ArangoDB uses well-known GraphML frameworks like +[Deep Graph Library](https://www.dgl.ai) +and [PyTorch Geometric](https://pytorch-geometric.readthedocs.io/en/latest/) +and connects to these external machine learning libraries. When coupled to +ArangoDB, you are essentially integrating them with your graph dataset. + +#### Example: ArangoFlix + +ArangoFlix is a complete movie recommendation application that predicts missing +links between a user and the movies they have not watched yet. + +This [interactive tutorial](https://colab.research.google.com/github/arangodb/interactive_tutorials/blob/master/notebooks/Integrate_ArangoDB_with_PyG.ipynb) +demonstrates how to integrate ArangoDB with PyTorch Geometric to +build recommendation systems using Graph Neural Networks (GNNs). + +The full ArangoFlix demo website is accessible from the ArangoGraph Insights Platform, +the managed cloud for ArangoDB. You can open the demo website that connects to +your running database from the **Examples** tab of your deployment. + +{{< tip >}} +You can try out the ArangoGraph Insights Platform free of charge for 14 days. +Sign up at [dashboard.arangodb.cloud](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). +{{< /tip >}} + +The ArangoFlix demo uses five different recommendation methods: +- Content-Based using AQL +- Collaborative Filtering using AQL +- Content-Based using ML +- Matrix Factorization +- Graph Neural Networks + +![ArangoFlix demo](../../images/data-science-arangoflix.png) + +The ArangoFlix website not only offers an example of how the user recommendations might +look like in real life, but it also provides information on a recommendation method, +an AQL query, a custom graph visualization for each movie, and more. + ## How GraphML works Graph machine learning leverages the inherent structure of graph data, where diff --git a/site/content/3.13/data-science/arangographml/deploy.md b/site/content/3.13/data-science/graphml/deploy.md similarity index 98% rename from site/content/3.13/data-science/arangographml/deploy.md rename to site/content/3.13/data-science/graphml/deploy.md index 0d62cb12f6..dccca0b59d 100644 --- a/site/content/3.13/data-science/arangographml/deploy.md +++ b/site/content/3.13/data-science/graphml/deploy.md @@ -5,6 +5,8 @@ weight: 5 description: >- You can deploy ArangoGraphML in your own Kubernetes cluster or use the managed cloud service that comes with a ready-to-go, pre-configured environment +aliases: + - ../arangographml/deploy --- ## Managed cloud service versus self-managed diff --git a/site/content/3.13/data-science/arangographml/getting-started.md b/site/content/3.13/data-science/graphml/getting-started.md similarity index 99% rename from site/content/3.13/data-science/arangographml/getting-started.md rename to site/content/3.13/data-science/graphml/getting-started.md index 6bd614167e..51b756d81d 100644 --- a/site/content/3.13/data-science/arangographml/getting-started.md +++ b/site/content/3.13/data-science/graphml/getting-started.md @@ -5,7 +5,8 @@ weight: 10 description: >- How to control all resources inside ArangoGraphML in a scriptable manner aliases: - - getting-started-with-arangographml + - ../arangographml/getting-started-with-arangographml + - ../arangographml/getting-started --- ArangoGraphML provides an easy-to-use & scalable interface to run Graph Machine Learning on ArangoDB Data. Since all of the orchestration and ML logic is managed by ArangoGraph, all that is typically required are JSON specifications outlining individual processes to solve an ML Task. If you are using the self-managed solution, additional configurations may be required. diff --git a/site/content/3.13/data-science/llm-knowledge-graphs.md b/site/content/3.13/data-science/hybrid-rag.md similarity index 73% rename from site/content/3.13/data-science/llm-knowledge-graphs.md rename to site/content/3.13/data-science/hybrid-rag.md index 80d8be9666..c11cdaa8eb 100644 --- a/site/content/3.13/data-science/llm-knowledge-graphs.md +++ b/site/content/3.13/data-science/hybrid-rag.md @@ -1,9 +1,13 @@ --- -title: Large Language Models (LLMs) and Knowledge Graphs -menuTitle: Large Language Models and Knowledge Graphs -weight: 133 +title: Graph-powered HybridRAG +menuTitle: HybridRAG +weight: 10 description: >- - Integrate large language models (LLMs) with knowledge graphs using ArangoDB + ArangoDB's HybridRAG combines graph-based retrieval augmented generation + (GraphRAG) with Large Language Models (LLMs) for turbocharged Gen AI solutions +aliases: + llm-knowledge-graphs +# TODO: Repurpose for GenAI --- Large language models (LLMs) and knowledge graphs are two prominent and contrasting concepts, each possessing unique characteristics and functionalities @@ -25,7 +29,17 @@ ArangoDB's unique capabilities and flexible integration of knowledge graphs and LLMs provide a powerful and efficient solution for anyone seeking to extract valuable insights from diverse datasets. -## Knowledge Graphs +The HybridRAG component of the Data Science Suite brings all the capabilities +together with an easy-to-use interface so you can make the knowledge accessible +to your organization. + +## HybridRAG + +ArangoDB's HybridRAG solution democratizes the creation and usage of knowledge +graphs with a unique combination of vector search, graphs, and LLMs in a +single product. + +### Knowledge Graphs A knowledge graph can be thought of as a dynamic and interconnected network of real-world entities and the intricate relationships that exist between them. @@ -48,7 +62,29 @@ the following tasks: ![ArangoDB Knowledge Graphs and LLMs](../../images/ArangoDB-knowledge-graphs-meets-llms.png) -## ArangoDB and LangChain +### Examples + +### Services + +#### Service A + +#### Service B + +### Interfaces + +{{< tabs "interfaces" >}} + +{{< tab "Web interface" >}} +1. In the Platform UI, ... +{{< /tab >}} + +{{< tab "cURL" >}} +curl http://localhost:8529/gen-ai/ +{{< /tab >}} + +{{< /tabs >}} + +#### ArangoDB and LangChain [LangChain](https://www.langchain.com/) is a framework for developing applications powered by language models. @@ -62,7 +98,7 @@ data seamlessly via natural language, eliminating the need for query language design. By using LLM chat models such as OpenAI’s ChatGPT, you can "speak" to your data instead of querying it. -### Get started with ArangoDB QA chain +##### Get started with ArangoDB QA chain The [ArangoDB QA chain notebook](https://langchain-langchain.vercel.app/docs/use_cases/more/graph/graph_arangodb_qa.html) shows how to use LLMs to provide a natural language interface to an ArangoDB @@ -70,4 +106,4 @@ instance. Run the notebook directly in [Google Colab](https://colab.research.google.com/github/arangodb/interactive_tutorials/blob/master/notebooks/Langchain.ipynb). -See also other [machine learning interactive tutorials](https://github.com/arangodb/interactive_tutorials#machine-learning). \ No newline at end of file +See also other [machine learning interactive tutorials](https://github.com/arangodb/interactive_tutorials#machine-learning). From 3ef992fc379fdc35202bdf40753b8849d8d52d70 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Wed, 30 Apr 2025 10:17:23 +0200 Subject: [PATCH 02/48] Fix image --- site/content/3.13/data-science/_index.md | 3 ++- site/content/3.13/data-science/graphml/_index.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/site/content/3.13/data-science/_index.md b/site/content/3.13/data-science/_index.md index 7311f10dcb..b3158d8fc6 100644 --- a/site/content/3.13/data-science/_index.md +++ b/site/content/3.13/data-science/_index.md @@ -3,7 +3,8 @@ title: Data Science menuTitle: Data Science weight: 115 description: >- - ArangoDB lets you + ArangoDB's set of tools and technologies enables analytics, machine learning, + and GenAI applications powered by graph data aliases: - data-science/overview --- diff --git a/site/content/3.13/data-science/graphml/_index.md b/site/content/3.13/data-science/graphml/_index.md index 96590d719d..54d0bed905 100644 --- a/site/content/3.13/data-science/graphml/_index.md +++ b/site/content/3.13/data-science/graphml/_index.md @@ -57,7 +57,7 @@ The ArangoFlix demo uses five different recommendation methods: - Matrix Factorization - Graph Neural Networks -![ArangoFlix demo](../../images/data-science-arangoflix.png) +![ArangoFlix demo](../../../images/data-science-arangoflix.png) The ArangoFlix website not only offers an example of how the user recommendations might look like in real life, but it also provides information on a recommendation method, From 0f5743a0bf3f67e0f9715bbdddc1ae27e52d8743 Mon Sep 17 00:00:00 2001 From: Mohammad Dawas Date: Tue, 10 Jun 2025 15:15:59 +0300 Subject: [PATCH 03/48] adding natural language service documentation --- .../DEVELOPER_GUIDE.md | 332 ++++++++++++++++++ .../natural_language_service/USER_GUIDE.md | 231 ++++++++++++ 2 files changed, 563 insertions(+) create mode 100644 genai_docs/natural_language_service/DEVELOPER_GUIDE.md create mode 100644 genai_docs/natural_language_service/USER_GUIDE.md diff --git a/genai_docs/natural_language_service/DEVELOPER_GUIDE.md b/genai_docs/natural_language_service/DEVELOPER_GUIDE.md new file mode 100644 index 0000000000..c3bfce0642 --- /dev/null +++ b/genai_docs/natural_language_service/DEVELOPER_GUIDE.md @@ -0,0 +1,332 @@ +# Developer Guide for txt2aql + +This guide provides comprehensive instructions for developers working with the Natural Language to AQL Translation Service (txt2aql). + +## Table of Contents +- [Development Environment Setup](#development-environment-setup) +- [Project Structure](#project-structure) +- [Development Workflow](#development-workflow) + - [Local Development](#local-development) + - [Protobuf Code Generation](#code-generation) + - [Code Quality](#code-quality) + - [Testing](#testing) +- [LLM Provider Configuration](#llm-provider-configuration) +- [Deployment](#deployment) +- [CI Pipeline](#ci-pipeline) +- [Troubleshooting](#troubleshooting) + +## Development Environment Setup + +### Prerequisites +- Python 3.12+ +- Poetry for dependency management +- Docker +- ArangoDB instance +- One of the supported LLM providers: + - OpenAI API key + - Triton server + - Ollama + +### Initial Setup + +1. Clone the repository +```bash +git clone +cd natural-language-service +``` + +2. Install Poetry (if not already installed) +```bash +pipx install poetry +``` + +3. Install project dependencies +```bash +poetry install +``` +This should create a virtual environment inside the project and install all the necessary dependencies for the project plus the project package to your local environment. + +## Project Structure +Here is the structure of the main parts of the project: +``` +natural-language-service/ +├── txt2aql/ # Core service code +│ ├── server.py # gRPC server implementation +│ ├── service.py # Main service logic +│ ├── read_only_chain.py # LangChain implementation for read-only chain +│ └── llm_factory.py # LLM provider factory +├── proto/ # Protocol buffer definitions +├── tests/ # Test suite +│ ├── unit/ # Unit tests +│ └── integration/ # Integration tests +├── docs/ # Documentation +└── charts/ # Helm charts for deployment +``` + +## Development Workflow + +### Local Development + +#### Docker Compose File + +The `docker-compose.yml` file in this repository defines three main services for local development: + +- **python**: Runs the `txt2aql` application, exposing ports for gRPC APIs. It is built from the local source and configured with environment variables for database and LLM provider integration. +- **proxy**: Acts as a reverse proxy, routing external HTTP traffic to the appropriate backend service ports for easier access and local testing. +- **arangodb**: Provides a local ArangoDB instance with persistent storage and default credentials, used by the application for data storage and retrieval. Please note that this instance does not have data stored in it yet, so running queries against ArangoDB instance is not yet possible in dev environment. + +The file sets up networking and environment variables to ensure all services can communicate and persist data as needed. To launch the full stack locally, use: + +```bash +docker-compose up +``` + +This setup streamlines development, ensures consistent environments, and simplifies dependency management. + +### Code Generation + +Generate Protocol Buffer code: +```bash +./compile_protos.sh +``` + +### Code Quality + +#### Pre-commit Hooks + +Pre-commit hooks are automated checks that run before each commit to ensure code quality and consistency. They help catch issues early in the development process and maintain high code standards across the project. + +##### Installation + +The pre-commit package is included in the development dependencies. If you haven't already, install them with: + +```bash +poetry install --with dev +``` + +Install the pre-commit hooks into your local git repository: + +```bash +poetry run pre-commit install +``` + +##### Available Hooks + +The project uses several pre-commit hooks for quality control: + +1. **Code Formatting** + + - `isort`: Sorts Python imports alphabetically and separates them into sections + - `black`: Enforces consistent Python code formatting + +2. **Static Analysis** + + - `mypy`: Performs static type checking of Python code + - `flake8`: Checks for style guide enforcement and coding standards + +3. **Security** + + - `bandit`: Scans for common security issues in Python code (excludes tests and generated code) + +##### Best Practices + +1. Address all hook failures before pushing code +2. Don't bypass hooks unless absolutely necessary +3. Consider using VS Code extensions of these linting tools to get automated fixes on the fly. + +### Testing + +### Unit Tests + +Run unit tests: +```bash +poetry run pytest tests/unit/ +``` + +### Integration Tests + +So far there is no integration tests environment for local development. So these tests shold be executed in the CI pipeline. In this section, we are explaining the scripts used in preparing integration tests environment on the CI pipeline. + +#### Test Model Creation + +The service includes a script to create a minimal test model for Triton inference server testing. The model consists of: + +1. A simple ONNX model that implements an identity operation +2. Triton model configuration in protobuf text format +3. Proper directory structure required by Triton + +To create the test model: + +```bash +poetry run python scripts/tests/create_test_model.py +``` + +This creates: + +```plaintext +artifacts/ +└── minimal_model/ + ├── 1/ + │ └── model.onnx # Minimal ONNX model + └── config.pbtxt # Triton configuration +``` + +The generated model: + +- Accepts string input (single element) +- Returns string output (identity function) +- Uses ONNX Runtime as the backend +- Has no batching enabled + +You can use this as a template to create your own test models by modifying the input/output specifications and model operations in `create_test_model.py`. + +#### Create Test Database + +For testing purposes, the service includes a script to create a test database with sample data. The script: + +1. Connects to ArangoDB's system database +2. Creates a new test database +3. Sets up a test collection with indexed fields +4. Populates it with sample student data + +To create the test database: + +```bash +poetry run python scripts/tests/create_test_database.py +``` + +The script will: + +- Create a new database with the test database name +- Create a collection named "students" +- Add a persistent unique index on the "name" field +- Insert sample documents: + +```json +{"name": "jane", "age": 39} +{"name": "josh", "age": 18} +{"name": "judy", "age": 21} +``` + +This script is executed automatically inside the entrypoint-tests.sh script, so you don't need to run it manually. +Note: Ensure your ArangoDB instance is running and accessible before running this script. The script uses environment variable `ARANGODB_ENDPOINT` for the connection. + +#### Prepare Test Environment + +The `prepare_test_environment.py` script sets up a complete testing environment in Kubernetes with the following components: + +1. **MLflow Setup** + - Deploys MLflow artifact repository service for model storage + - Deploys MLflow tracking service for model registry + - Registers the test model ("minimal_model") created in the previous step + +2. **LLM Host (Triton) Setup** + - Deploys Triton Inference Server for model serving + - Resource configuration: + - Memory: 1-2Gi + - CPU: 100-200m + - Storage: 10-15Gi + +3. **Service Deployment** + - Deploys two instances of the Natural Language service: + - One using OpenAI for testing + - One using Triton with the test model + +Similar to the create_test_database.py script, the script is executed automatically inside the entrypoint-tests.sh script, so you don't need to run it manually. + +#### Environment Variables +The script also sets environment variables needed by the tests: +- `TRITON_HTTP_URL`: Triton server HTTP endpoint +- `TRITON_GRPC_URI`: Triton server gRPC endpoint +- `NL_SERVICE_OPENAI_URL`: OpenAI-backed service URL +- `NL_SERVICE_TRITON_URL`: Triton-backed service URL + +## LLM Provider Configuration + +### OpenAI Configuration + +- Default model: gpt-3.5-turbo +- Configurable temperature and retry settings +- API key required + +### Triton Configuration + +- Requires running Triton Inference Server +- Model must be loaded and available +- gRPC endpoint configuration required + +### Ollama Configuration + +- Local LLM deployment +- Requires running Ollama server +- Supports various open-source models + +Please note that Ollama is not meant for production use. + +## Deployment + +### Helm Chart Deployment + +The project includes a Helm chart that can be used to deploy the service. This helm chart defines the resources that will be created and used upon installation. + +Service installation must be done through GenAI service exclusively. Please check the grpc endpoint `CreateGraphRag`, which is accessible via http post request: `/v1/graphrag` +to install the service. + +All required parameters are defined in the helm chart's deployment.yaml file and labeled with keyword `required`. + +## CI Pipeline + +The project uses CircleCI for continuous integration and deployment. The pipeline consists of several workflows: + +### Main Workflows + +1. **python_ci**: Code quality checks + - `test`: Runs unit tests with pytest + - `lint`: Runs code quality checks (black, isort, mypy, flake8, bandit) + +2. **dev**: Runs on non-main branches + - Builds development Docker images + - Creates development Helm charts + - Deploys to development environment + - Runs integration tests + +3. **qa**: Runs on main branch + - Builds QA Docker images + - Creates QA Helm charts + - Deploys to both development and QA environments + - Runs integration tests + +### Key Features + +- Uses AWS ECR for Docker image storage +- Deploys Helm charts to S3 buckets +- Supports two environments: dev and qa. +- Includes integration tests with MLflow and Triton server +- Uses Poetry for Python dependency management + +### Environment Requirements + +The pipeline requires several context variables: +- `aws`: AWS credentials and configuration +- `agml-pypi`: Private PyPI repository credentials +- `LLM-KEYS`: OpenAI API keys for testing +- `ArangoML-CI-Jenkins`: CI/CD integration settings + +## Troubleshooting + +### Common Issues + +1. Database Connection Issues + - Verify ARANGODB_URL is accessible + - Check authentication credentials + - Ensure database exists and is accessible + +2. LLM Provider Issues + - Verify API credentials + - Check provider endpoint availability + - Validate model names and configurations + +3. gRPC/HTTP Connection Issues + - Check port availability (9090 for gRPC, 8080 for HTTP) + - Verify network/firewall settings + - Check SSL/TLS configuration if enabled diff --git a/genai_docs/natural_language_service/USER_GUIDE.md b/genai_docs/natural_language_service/USER_GUIDE.md new file mode 100644 index 0000000000..bf92cf1f3a --- /dev/null +++ b/genai_docs/natural_language_service/USER_GUIDE.md @@ -0,0 +1,231 @@ +# Natural Language to AQL Translation Service (txt2aql) + +## Overview +The Natural Language to AQL Translation Service is a powerful tool that allows you to interact with your ArangoDB database using natural language queries. It translates your questions and commands into AQL (ArangoDB Query Language), executes the queries, and provides responses in natural language. + +## Features +- Natural language to AQL query translation +- Support for multiple LLM providers (via OpenAI API or a self-hosted Triton Inference Server) +- RESTful and gRPC interfaces +- Health monitoring endpoints +- Flexible output formats (Natural Language, AQL, JSON) + +## Getting Started + +### Prerequisites +- ArangoDB instance +- OpenAI API key (if using OpenAI as provider) +- Triton URL and model name (if using Triton as provider) + + +### Configuration +The following environment variables are set at installation time and used at runtime: + +```bash +# Required Database Configuration +ARANGODB_NAME= +ARANGODB_USER= + +# LLM Provider Configuration +API_PROVIDER= # "openai" or "triton" + +# If using OpenAI +OPENAI_API_KEY= +OPENAI_MODEL= # Optional, defaults to GPT-4 +OPENAI_TEMPERATURE= # Optional +OPENAI_MAX_RETRIES= # Optional + +# If using Triton +TRITON_URL= +TRITON_MODEL= +TRITON_TIMEOUT= # Optional +``` + +### Starting the Service +To start the service, use GenAI service endpoint `CreateGraphRag`. Please refer to the documentation of GenAI service for more information on how to use it. + +### Required Parameters +These parameters must be provided in the install request sent to GenAI service. + +- `username`: Database username for authentication +- `db_name`: Name of the ArangoDB database +- `api_provider`: LLM provider selection (`openai`, `triton`) + +### Provider-Specific Required Parameters + +#### OpenAI Provider + +- `openai_api_key`: API key for OpenAI authentication +- `openai_model`: Model name (defaults to "gpt-3.5-turbo" if not specified) + +#### Triton Provider + +- `triton_url`: URL of the Triton inference server +- `triton_model`: Model name to use with Triton + + +## API Reference + +### REST Endpoints + +1. **Process Text** - Ask general questions to the LLM and get a natural language response. This endpoint does not query the database. +```bash +POST /v1/process_text +Content-Type: application/json + +{ + "input_text": "What are the advantages of graph databases?" +} +``` + +2. **Translate Query** - Convert natural language to AQL and query the database +```bash +POST /v1/translate_query +Content-Type: application/json + +{ + "input_text": "Find all users who are friends with John", + "options": { + "output_formats": ["NL", "AQL", "JSON"] + } +} +``` + + +3. **Health Check** - Monitor service health +```bash +GET /v1/health +``` + +### gRPC Endpoints + +The service also provides gRPC endpoints for more efficient communication: + +1. **Process Text** +```bash +grpcurl -plaintext -d '{"input_text": "Hello world"}' \ + localhost:9090 txt2aql.Txt2AqlService/ProcessText +``` + +2. **Translate Query** +```bash +grpcurl -plaintext -d '{ + "input_text": "Find all characters from House Stark", + "options": { + "output_formats": ["NL","AQL","JSON"] + } +}' localhost:9090 txt2aql.Txt2AqlService/TranslateQuery +``` + +3. **Health Check** +```bash +grpcurl -plaintext localhost:9090 txt2aql.Txt2AqlService/HealthCheck +``` + +## Output Formats + +The `translate_query` endpoint of the txt2aql service supports multiple output formats that can be specified in the `output_formats` field of your request. Each format serves a different purpose and can be used individually or in combination: + +### Natural Language (NL) + +- **Format identifier**: `"NL"` +- **Returns**: A human-readable explanation of the query results +- **Helpful for**: Understanding what the query found in plain English +- **Example**: + - **Input**: `Find all users who are friends with John` + - **Output**: `I found 3 users who are friends with John, including Alice, Bob, and Carol` + +### AQL Query (AQL) + +- **Format identifier**: `"AQL"` +- **Returns**: The generated ArangoDB Query Language (AQL) query +- **Useful for**: + - Debugging query translation + - Learning AQL syntax + - Modifying queries for reuse +- **Shows**: Exactly how your natural language was translated into database operations +- **Example**: + - **Input**: `Find all users who are friends with John` + - **Output**: `FOR u IN users FILTER u.friends ANY == 'John' RETURN u` + +### JSON Results (JSON) + +- **Format identifier**: `"JSON"` +- **Returns**: The raw query results in JSON format +- **Provides**: Direct access to the complete dataset +- **Ideal for**: + - Programmatic processing + - Data integration + - Custom formatting needs +- **Example**: + - **Input**: `Find all users who are friends with John` + - **Output**: `[{"name":"Alice","age":30},{"name":"Bob","age":25},{"name":"Carol","age":35}]` + +### Example Response + +```json +{ + "original_query": "Find all users who are friends with John", + "nl_response": "I found 3 users who are friends with John: Alice, Bob, and Carol", + "aql_query": "FOR u IN users FILTER u.friends ANY == 'John' RETURN u", + "aql_result": "[{\"name\":\"Alice\",\"age\":30},{\"name\":\"Bob\",\"age\":25},{\"name\":\"Carol\",\"age\":35}]" +} +``` + +### Usage Tips + +1. Request only the formats you need to minimize response size and processing time +2. Use `NL` for user interfaces, human consumption or when wrapped as an LLM-callable function (e.g. in LLM agent frameworks) +3. Use `AQL` for debugging and learning purposes +4. Use `JSON` for programmatic data processing such as API calls. + +### Default Behavior + +- If no output formats are specified, the service defaults to `NL` format only +- Multiple formats can be requested simultaneously +- Formats are processed efficiently, with results cached where possible + +## Error Handling + +The service provides clear error messages for common issues: + +- Invalid or missing environment variables +- Database connection failures +- Authentication errors +- Invalid query formats +- LLM provider errors + +Error responses include appropriate HTTP status codes and descriptive messages. + +## Best Practices + +1. Be specific in your queries to get more accurate translations +2. Use appropriate output formats based on your needs +3. Monitor the health endpoint for service status +4. Implement proper error handling in your client applications +5. Use connection pooling for better performance +6. Consider rate limiting for production deployments + +## Troubleshooting + +Common issues and solutions: + +1. **Connection Issues** + - Verify ARANGODB_ENDPOINT is accessible + - Check network/firewall settings + - Ensure proper authentication credentials + +2. **Query Translation Issues** + - Make queries more specific + - Check LLM provider configuration + - Verify database schema matches query context + - The quality of the generated AQL may vary depending on the LLM model used. + Therefore we recommend using an AQL-capable coding model (e.g. a frontier AQL-capable + LLM or a fine-tuned AQL-capable coding model) for better results. + +## Support + +For issues and feature requests, please refer to: +- GitHub Issues +- Documentation +- Community Forums From b862dc24de5b39896f96c04d368db518a70ce8e6 Mon Sep 17 00:00:00 2001 From: Mohammad Dawas Date: Tue, 10 Jun 2025 15:22:56 +0300 Subject: [PATCH 04/48] remove dev guide of NL service; was added by mistake --- .../DEVELOPER_GUIDE.md | 332 ------------------ 1 file changed, 332 deletions(-) delete mode 100644 genai_docs/natural_language_service/DEVELOPER_GUIDE.md diff --git a/genai_docs/natural_language_service/DEVELOPER_GUIDE.md b/genai_docs/natural_language_service/DEVELOPER_GUIDE.md deleted file mode 100644 index c3bfce0642..0000000000 --- a/genai_docs/natural_language_service/DEVELOPER_GUIDE.md +++ /dev/null @@ -1,332 +0,0 @@ -# Developer Guide for txt2aql - -This guide provides comprehensive instructions for developers working with the Natural Language to AQL Translation Service (txt2aql). - -## Table of Contents -- [Development Environment Setup](#development-environment-setup) -- [Project Structure](#project-structure) -- [Development Workflow](#development-workflow) - - [Local Development](#local-development) - - [Protobuf Code Generation](#code-generation) - - [Code Quality](#code-quality) - - [Testing](#testing) -- [LLM Provider Configuration](#llm-provider-configuration) -- [Deployment](#deployment) -- [CI Pipeline](#ci-pipeline) -- [Troubleshooting](#troubleshooting) - -## Development Environment Setup - -### Prerequisites -- Python 3.12+ -- Poetry for dependency management -- Docker -- ArangoDB instance -- One of the supported LLM providers: - - OpenAI API key - - Triton server - - Ollama - -### Initial Setup - -1. Clone the repository -```bash -git clone -cd natural-language-service -``` - -2. Install Poetry (if not already installed) -```bash -pipx install poetry -``` - -3. Install project dependencies -```bash -poetry install -``` -This should create a virtual environment inside the project and install all the necessary dependencies for the project plus the project package to your local environment. - -## Project Structure -Here is the structure of the main parts of the project: -``` -natural-language-service/ -├── txt2aql/ # Core service code -│ ├── server.py # gRPC server implementation -│ ├── service.py # Main service logic -│ ├── read_only_chain.py # LangChain implementation for read-only chain -│ └── llm_factory.py # LLM provider factory -├── proto/ # Protocol buffer definitions -├── tests/ # Test suite -│ ├── unit/ # Unit tests -│ └── integration/ # Integration tests -├── docs/ # Documentation -└── charts/ # Helm charts for deployment -``` - -## Development Workflow - -### Local Development - -#### Docker Compose File - -The `docker-compose.yml` file in this repository defines three main services for local development: - -- **python**: Runs the `txt2aql` application, exposing ports for gRPC APIs. It is built from the local source and configured with environment variables for database and LLM provider integration. -- **proxy**: Acts as a reverse proxy, routing external HTTP traffic to the appropriate backend service ports for easier access and local testing. -- **arangodb**: Provides a local ArangoDB instance with persistent storage and default credentials, used by the application for data storage and retrieval. Please note that this instance does not have data stored in it yet, so running queries against ArangoDB instance is not yet possible in dev environment. - -The file sets up networking and environment variables to ensure all services can communicate and persist data as needed. To launch the full stack locally, use: - -```bash -docker-compose up -``` - -This setup streamlines development, ensures consistent environments, and simplifies dependency management. - -### Code Generation - -Generate Protocol Buffer code: -```bash -./compile_protos.sh -``` - -### Code Quality - -#### Pre-commit Hooks - -Pre-commit hooks are automated checks that run before each commit to ensure code quality and consistency. They help catch issues early in the development process and maintain high code standards across the project. - -##### Installation - -The pre-commit package is included in the development dependencies. If you haven't already, install them with: - -```bash -poetry install --with dev -``` - -Install the pre-commit hooks into your local git repository: - -```bash -poetry run pre-commit install -``` - -##### Available Hooks - -The project uses several pre-commit hooks for quality control: - -1. **Code Formatting** - - - `isort`: Sorts Python imports alphabetically and separates them into sections - - `black`: Enforces consistent Python code formatting - -2. **Static Analysis** - - - `mypy`: Performs static type checking of Python code - - `flake8`: Checks for style guide enforcement and coding standards - -3. **Security** - - - `bandit`: Scans for common security issues in Python code (excludes tests and generated code) - -##### Best Practices - -1. Address all hook failures before pushing code -2. Don't bypass hooks unless absolutely necessary -3. Consider using VS Code extensions of these linting tools to get automated fixes on the fly. - -### Testing - -### Unit Tests - -Run unit tests: -```bash -poetry run pytest tests/unit/ -``` - -### Integration Tests - -So far there is no integration tests environment for local development. So these tests shold be executed in the CI pipeline. In this section, we are explaining the scripts used in preparing integration tests environment on the CI pipeline. - -#### Test Model Creation - -The service includes a script to create a minimal test model for Triton inference server testing. The model consists of: - -1. A simple ONNX model that implements an identity operation -2. Triton model configuration in protobuf text format -3. Proper directory structure required by Triton - -To create the test model: - -```bash -poetry run python scripts/tests/create_test_model.py -``` - -This creates: - -```plaintext -artifacts/ -└── minimal_model/ - ├── 1/ - │ └── model.onnx # Minimal ONNX model - └── config.pbtxt # Triton configuration -``` - -The generated model: - -- Accepts string input (single element) -- Returns string output (identity function) -- Uses ONNX Runtime as the backend -- Has no batching enabled - -You can use this as a template to create your own test models by modifying the input/output specifications and model operations in `create_test_model.py`. - -#### Create Test Database - -For testing purposes, the service includes a script to create a test database with sample data. The script: - -1. Connects to ArangoDB's system database -2. Creates a new test database -3. Sets up a test collection with indexed fields -4. Populates it with sample student data - -To create the test database: - -```bash -poetry run python scripts/tests/create_test_database.py -``` - -The script will: - -- Create a new database with the test database name -- Create a collection named "students" -- Add a persistent unique index on the "name" field -- Insert sample documents: - -```json -{"name": "jane", "age": 39} -{"name": "josh", "age": 18} -{"name": "judy", "age": 21} -``` - -This script is executed automatically inside the entrypoint-tests.sh script, so you don't need to run it manually. -Note: Ensure your ArangoDB instance is running and accessible before running this script. The script uses environment variable `ARANGODB_ENDPOINT` for the connection. - -#### Prepare Test Environment - -The `prepare_test_environment.py` script sets up a complete testing environment in Kubernetes with the following components: - -1. **MLflow Setup** - - Deploys MLflow artifact repository service for model storage - - Deploys MLflow tracking service for model registry - - Registers the test model ("minimal_model") created in the previous step - -2. **LLM Host (Triton) Setup** - - Deploys Triton Inference Server for model serving - - Resource configuration: - - Memory: 1-2Gi - - CPU: 100-200m - - Storage: 10-15Gi - -3. **Service Deployment** - - Deploys two instances of the Natural Language service: - - One using OpenAI for testing - - One using Triton with the test model - -Similar to the create_test_database.py script, the script is executed automatically inside the entrypoint-tests.sh script, so you don't need to run it manually. - -#### Environment Variables -The script also sets environment variables needed by the tests: -- `TRITON_HTTP_URL`: Triton server HTTP endpoint -- `TRITON_GRPC_URI`: Triton server gRPC endpoint -- `NL_SERVICE_OPENAI_URL`: OpenAI-backed service URL -- `NL_SERVICE_TRITON_URL`: Triton-backed service URL - -## LLM Provider Configuration - -### OpenAI Configuration - -- Default model: gpt-3.5-turbo -- Configurable temperature and retry settings -- API key required - -### Triton Configuration - -- Requires running Triton Inference Server -- Model must be loaded and available -- gRPC endpoint configuration required - -### Ollama Configuration - -- Local LLM deployment -- Requires running Ollama server -- Supports various open-source models - -Please note that Ollama is not meant for production use. - -## Deployment - -### Helm Chart Deployment - -The project includes a Helm chart that can be used to deploy the service. This helm chart defines the resources that will be created and used upon installation. - -Service installation must be done through GenAI service exclusively. Please check the grpc endpoint `CreateGraphRag`, which is accessible via http post request: `/v1/graphrag` -to install the service. - -All required parameters are defined in the helm chart's deployment.yaml file and labeled with keyword `required`. - -## CI Pipeline - -The project uses CircleCI for continuous integration and deployment. The pipeline consists of several workflows: - -### Main Workflows - -1. **python_ci**: Code quality checks - - `test`: Runs unit tests with pytest - - `lint`: Runs code quality checks (black, isort, mypy, flake8, bandit) - -2. **dev**: Runs on non-main branches - - Builds development Docker images - - Creates development Helm charts - - Deploys to development environment - - Runs integration tests - -3. **qa**: Runs on main branch - - Builds QA Docker images - - Creates QA Helm charts - - Deploys to both development and QA environments - - Runs integration tests - -### Key Features - -- Uses AWS ECR for Docker image storage -- Deploys Helm charts to S3 buckets -- Supports two environments: dev and qa. -- Includes integration tests with MLflow and Triton server -- Uses Poetry for Python dependency management - -### Environment Requirements - -The pipeline requires several context variables: -- `aws`: AWS credentials and configuration -- `agml-pypi`: Private PyPI repository credentials -- `LLM-KEYS`: OpenAI API keys for testing -- `ArangoML-CI-Jenkins`: CI/CD integration settings - -## Troubleshooting - -### Common Issues - -1. Database Connection Issues - - Verify ARANGODB_URL is accessible - - Check authentication credentials - - Ensure database exists and is accessible - -2. LLM Provider Issues - - Verify API credentials - - Check provider endpoint availability - - Validate model names and configurations - -3. gRPC/HTTP Connection Issues - - Check port availability (9090 for gRPC, 8080 for HTTP) - - Verify network/firewall settings - - Check SSL/TLS configuration if enabled From 430efc09bd16ed0828b2ef5d2706ef996f5b2bbc Mon Sep 17 00:00:00 2001 From: sachinsharma9780 Date: Tue, 10 Jun 2025 17:23:40 +0200 Subject: [PATCH 05/48] add user-facing-documentation for ragloader --- genai_docs/RagLoader/USER_GUIDE.md | 219 +++++++++++++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 genai_docs/RagLoader/USER_GUIDE.md diff --git a/genai_docs/RagLoader/USER_GUIDE.md b/genai_docs/RagLoader/USER_GUIDE.md new file mode 100644 index 0000000000..73b6506ebb --- /dev/null +++ b/genai_docs/RagLoader/USER_GUIDE.md @@ -0,0 +1,219 @@ +# RagLoader User Guide + +## Overview + +The RagLoader service helps you transform your text document into knowledge graph, making it easier to analyze and understand complex information. It works with individual text files, supporting plain text format with UTF-8 encoding or markdown files. + +The Loader takes your text, analyzes it using the configured language model, and creates a structured knowledge graph. This graph is then imported into your ArangoDB database, where you can query and analyze the relationships between different concepts in your document with our RagRetriever service. + + +## How ArangoDB Collections looks after Import Process: + +The RagLoader creates several collections in ArangoDB to store different aspects of your knowledge graph. Here's a detailed explanation of each collection: + +### Documents Collection +- **Purpose**: Stores the original text document that were processed +- **Key Fields**: + - `_key`: Unique identifier for the document + - `content`: The full text content of the document +- **Usage**: Acts as the root level container for all document-related data + +### Chunks Collection +- **Purpose**: Stores text chunks extracted from documents for better processing and analysis +- **Key Fields**: + - `_key`: Unique identifier for the chunk + - `content`: The text content of the chunk + - `tokens`: Number of tokens in the chunk + - `chunk_order_index`: Position of the chunk in the original document +- **Usage**: Enables granular analysis of document content and maintains document structure + +### Entities Collection +- **Purpose**: Stores entities extracted from the text, such as persons, organizations, concepts, etc. +- **Key Fields**: + - `_key`: Unique identifier for the entity + - `entity_name`: Name of the entity + - `entity_type`: Type of entity (e.g., person, organization) + - `description`: Description of the entity + - `embedding`: Vector representation of the entity for similarity search + - `clusters`: Community clusters the entity belongs to +- **Usage**: Enables entity-based querying and semantic search + +### Communities Collection +- **Purpose**: Stores thematic clusters of related entities that form meaningful communities within your documents. Each community represents a cohesive group of concepts, characters, or themes that are closely related and interact with each other. These communities help identify and analyze the main narrative threads, character relationships, and thematic elements in your documents. +- **Key Fields**: + - `_key`: Unique identifier for the community + - `title`: Cluster ID to which this community belongs to + - `report_string`: A detailed markdown-formatted analysis that explains the community's theme, key relationships, and significance. This includes sections on main characters, their roles, relationships, and the impact of key events or locations. + - `report_json`: Structured data containing: + - `title`: The main theme or focus of the community + - `summary`: A concise overview of the community's central narrative + - `rating`: A numerical score indicating the community's significance (higher the better) + - `rating_explanation`: Justification for the rating + - `findings`: An array of detailed analyses, each containing a summary and explanation of key aspects + - `level`: The hierarchical level of the community (e.g., 1 for top-level communities) + - `occurrence`: A normalized score (ranging from 0 to 1) showing the relative frequency with which this community is mentioned or identified throughout your documents. A value close to 1 means this community is very common in your data and a value near 0 means it is rare. + - `sub_communities`: References to more specific sub-communities that are part of this larger community +- **Usage**: Enables you to: + - Identify and analyze major narrative threads and themes + - Understand complex relationships between characters and concepts + - Track the significance and impact of different story elements + - Navigate through hierarchical relationships between themes + - Discover patterns and recurring elements in your documents + +### Relations Collection +- **Purpose**: Stores relationships between different nodes in the graph +- **Key Fields**: + - `_from`: Source node reference + - `_to`: Target node reference + - `type`: Type of relationship (e.g., "PART_OF", "MENTIONED_IN", "RELATED_TO", "IN_COMMUNITY") + - Additional metadata depending on relationship type (Entity to Entity): + - `weight`: Relationship strength (higher the better) + - `description`: Description of the relationship + - `source_id`: Source of the relationship + - `order`: Order of the relationship +- **Usage**: Enables traversal and analysis of relationships between different elements + +### Relationship Types +The system creates several types of relationships between nodes: + +1. **PART_OF**: Links chunks to their parent documents +2. **MENTIONED_IN**: Connects entities to the chunks where they are mentioned +3. **RELATED_TO**: Shows relationships between different entities +4. **IN_COMMUNITY**: Associates entities with their community groups + +### Vector Search Capabilities +The system automatically creates vector indexes on the `embedding` field in the Entities collection, enabling: +- Semantic similarity search +- Nearest neighbor queries +- Efficient vector-based retrieval + +## Available Deployment Options: + +You can choose between two deployment options based on your needs: + +1. If you're working in an air-gapped environment or need to keep your data private, you can use the private LLM mode with Triton Inference Server. This option allows you to run the service completely within your own infrastructure. The Triton Inference Server is a crucial component when running in private LLM mode. It serves as the backbone for running your language (LLM) and embedding models on youe own machines, ensuring your data never leaves your infrastructure. The server handles all the complex model operations, from processing text to generating embeddings, and provides both HTTP and gRPC interfaces for communication. + +2. Alternatively, if you prefer a simpler setup and don't have specific privacy requirements, you can use the public LLM mode. This option connects to cloud-based services like OpenAI's models via the OpenAI API or a large array of models (Gemini, Anthropic, publicly hosted open-source models, etc.) via the OpenRouter option. + + +### How to install RagLoader Service + +As mentioned RagLoader service can be configured to use either Triton Inference Server (for private LLM deployments) or OpenAI / OpenRouter (for public LLM deployments). +To start the service, use GenAI service endpoint `/v1/graphragimporter`. Please refer to the documentation of GenAI service for more information on how to use it. +Here are the configuration options for all three options: + +#### Option 1: Using Triton Inference Server (Private LLM) + +First setup and install LLM-Host service with LLM and embedding models of your choice. The setup will use Triton Inference Server and mlflow at the backend. Please refer to below documentation for more dtetail: +// @docs-team please insert reference to GenAI/Triton documentation here + +Once the LLM-host service is installed and running successfully, then you can start the loader service using the below reference: + +```json +{ + "env": { + "username": "your_username", + "db_name": "your_database_name", + "api_provider": "triton", + "triton_url": "your-arangodb-llm-host-url", + "triton_model": "mistral-nemo-instruct" + }, +} +``` + +- `username`: ArangoDB database user with permissions to create and modify collections +- `db_name`: Name of the ArangoDB database where the knowledge graph will be stored +- `api_provider`: Specifies which LLM provider to use +- `triton_url`: URL of your Triton Inference Server instance. This should be the URL where your LLM-host service is running +- `triton_model`: Name of the LLM model to use for text processing + +#### Using OpenAI + +```json +{ + "env": { + "openai_api_key": "your_openai_api_key", + "username": "your_username", + "db_name": "your_database_name", + "api_provider": "openai" + }, +} +``` + +- `username`: ArangoDB database user with permissions to create and modify collections +- `db_name`: Name of the ArangoDB database where the knowledge graph will be stored +- `api_provider`: Specifies which LLM provider to use +- `openai_api_key`: Your OpenAI API key + +Note: By default for openai api we use gpt-4o-mini and text-embedding-3-small models as LLM and embedding model respectively. + + +### Using OpenRouter (Gemini, Anthropic, etc.) + +OpenRouter makes it possible to connect to a huge array of LLM API providers, including non-OpenAI LLMs like Gemini Flash, Anthropic Claude and publicly hosted open-source models. + +When using the OpenRouter option, the LLM responses are served via OpenRouter while OpenAI is used for the embedding model. + +```json + { + "env": { + "db_name": "your_database_name", + "username": "your_username", + "api_provider": "openrouter", + "openai_api_key": "your_openai_api_key", + "openrouter_api_key": "your_openrouter_api_key", + "openrouter_model": "mistralai/mistral-nemo" // Specify a model here + }, + } +``` + +- `username`: ArangoDB database user with permissions to access collections +- `db_name`: Name of the ArangoDB database where the knowledge graph is stored +- `api_provider`: Specifies which LLM provider to use +- `openai_api_key`: Your OpenAI API key (for the embedding model) +- `openrouter_api_key`: Your OpenRouter API key (for the LLM) +- `openrouter_model`: Desired LLM (optional; default is `mistral-nemo`) + +> **Note** +> When using OpenRouter, we default to `mistral-nemo` for generation (via OpenRouter) and `text-embedding-3-small` for embeddings (via OpenAI). +## Building Knowledge Graphs + +Once service is installed successfully, you can follow the following steps to send an input file to the loader service: + +1. Prepare your text document for processing (text format with UTF-8 encoding or markdown files) + +2. Send the document to the RagLoader service using HTTP: + ```bash + # Base64 encode your document + base64_content=$(base64 -i your_document.txt) + + # Send to the Loader service + curl -X POST /v1/import \ + -H "Content-Type: application/json" \ + -d '{ + "file_content": "'$base64_content'", + "file_name": "your_document.txt" + }' + ``` + + Replace the following placeholders: + - ``: Your ArangoDB Platform URL + - ``: The URL postfix configured in your deployment + + + The service will: + - Process the document using the configured LLM model + - Generate embeddings using the embedding model + - Build a knowledge graph + - Import the graph into your ArangoDB database + + +### Verifying the Import + +You can verify that the import was successful by checking your ArangoDB database: + +1. Connect to your ArangoDB instance +2. Navigate to the specified database +3. Verify that the following collections exist: + - `knowledge_graph_vertices`: Contains the nodes of the knowledge graph i.e. documents, chunks, communities, and entities. + - `knowledge_graph_edges`: Contains the relationships between nodes i.e. relations. From 5685e2351ac5fc4c2c14f2031b2a60e7928fa8e6 Mon Sep 17 00:00:00 2001 From: sachinsharma9780 Date: Tue, 10 Jun 2025 17:23:59 +0200 Subject: [PATCH 06/48] add user-facing-documentation for ragretriever --- genai_docs/RagRetriever/USER_GUIDE.md | 196 ++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 genai_docs/RagRetriever/USER_GUIDE.md diff --git a/genai_docs/RagRetriever/USER_GUIDE.md b/genai_docs/RagRetriever/USER_GUIDE.md new file mode 100644 index 0000000000..5a11fb8b9c --- /dev/null +++ b/genai_docs/RagRetriever/USER_GUIDE.md @@ -0,0 +1,196 @@ +# RagRetriever User Guide + +## Summary + +RagRetriever is a powerful service that enables intelligent search and retrieval from knowledge graphs created by GraphRAG Importer. It offers two distinct search methods: + +- **Global Search**: Analyzes entire document to identify themes and patterns, perfect for high-level insights and comprehensive summaries. +- **Local Search**: Focuses on specific entities and their relationships, ideal for detailed queries about particular concepts. + +The service supports both private (Triton Inference Server) and public (OpenAI) LLM deployments, making it flexible for various security and infrastructure requirements. With simple HTTP endpoints, you can easily query your knowledge graph and get contextually relevant responses. + +Key features: +- Dual search methods for different query types +- Support for both private and public LLM deployments +- Simple REST API interface +- Integration with ArangoDB knowledge graphs +- Configurable community hierarchy levels + +## Overview + +The RagRetriever service enables intelligent search and retrieval of information from your knowledge graph. It provides two powerful search methods - Global Search and Local Search - that leverage the structured knowledge graph created by the GraphRAG Importer to deliver accurate and contextually relevant responses to your natural language queries. + +## Search Methods + +### Global Search + +Global Search is designed for queries that require understanding and aggregation of information across your entire document. It's particularly effective for questions about overall themes, patterns, or high-level insights in your data. + +#### How Global Search Works + +1. **Community-Based Analysis**: Uses pre-generated community reports from your knowledge graph to understand the overall structure and themes of your data +2. **Map-Reduce Processing**: + - **Map Stage**: Processes community reports in parallel, generating intermediate responses with rated points + - **Reduce Stage**: Aggregates the most important points to create a comprehensive final response + +#### Best Use Cases +- "What are the main themes in the dataset?" +- "Summarize the key findings across all documents" +- "What are the most important concepts discussed?" + +### Local Search + +Local Search focuses on specific entities and their relationships within your knowledge graph. It's ideal for detailed queries about particular concepts, entities, or relationships. + +#### How Local Search Works + +1. **Entity Identification**: Identifies relevant entities from the knowledge graph based on the query +2. **Context Gathering**: Collects: + - Related text chunks from original documents + - Connected entities and their strongest relationships + - Entity descriptions and attributes + - Context from the community each entity belongs to +3. **Prioritized Response**: Generates a response using the most relevant gathered information + +#### Best Use Cases +- "What are the properties of [specific entity]?" +- "How is [entity A] related to [entity B]?" +- "What are the key details about [specific concept]?" + +## How to install RagRetriever Service + +The RagRetriever service can be configured to use either Triton Inference Server (for private LLM deployments) or OpenAI / OpenRouter (for public LLM deployments). +To start the service, use GenAI service endpoint `/v1/graphragretriever`. Please refer to the documentation of GenAI service for more information on how to use it. +Here are the configuration options for all 3 options: + +### Using Triton Inference Server (Private LLM) + +First setup and install LLM-Host service with LLM and embedding models of your choice. The setup will use Triton Inference Server and mlflow at the backend. Please refer to below documentation for more detail: +// @docs-team please insert reference to GenAI/Triton documentation here + +Once the LLM-host service is installed and running successfully, then you can start the retriever service using the below reference: + +```json +{ + "env": { + "username": "your_username", + "db_name": "your_database_name", + "api_provider": "triton", + "triton_url": "your-arangodb-llm-host-url", + "triton_model": "mistral-nemo-instruct" + }, +} +``` + +- `username`: ArangoDB database user with permissions to access collections +- `db_name`: Name of the ArangoDB database where the knowledge graph is stored +- `api_provider`: Specifies which LLM provider to use +- `triton_url`: URL of your Triton Inference Server instance. This should be the URL where your LLM-host service is running +- `triton_model`: Name of the LLM model to use for text processing + +### Using OpenAI + +```json +{ + "env": { + "openai_api_key": "your_openai_api_key", + "username": "your_username", + "db_name": "your_database_name", + "api_provider": "openai" + }, +} +``` + +- `username`: ArangoDB database user with permissions to access collections +- `db_name`: Name of the ArangoDB database where the knowledge graph is stored +- `api_provider`: Specifies which LLM provider to use +- `openai_api_key`: Your OpenAI API key + +Note: By default for OpenAI API, we use gpt-4-mini and text-embedding-3-small models as LLM and embedding model respectively. +### Using OpenRouter (Gemini, Anthropic, etc.) + +OpenRouter makes it possible to connect to a huge array of LLM API providers, including non-OpenAI LLMs like Gemini Flash, Anthropic Claude and publicly hosted open-source models. + +When using the OpenRouter option, the LLM responses are served via OpenRouter while OpenAI is used for the embedding model. + +```json + { + "env": { + "db_name": "your_database_name", + "username": "your_username", + "api_provider": "openrouter", + "openai_api_key": "your_openai_api_key", + "openrouter_api_key": "your_openrouter_api_key", + "openrouter_model": "mistralai/mistral-nemo" // Specify a model here + }, + } +``` + +- `username`: ArangoDB database user with permissions to access collections +- `db_name`: Name of the ArangoDB database where the knowledge graph is stored +- `api_provider`: Specifies which LLM provider to use +- `openai_api_key`: Your OpenAI API key (for the embedding model) +- `openrouter_api_key`: Your OpenRouter API key (for the LLM) +- `openrouter_model`: Desired LLM (optional; default is `mistral-nemo`) + +> **Note** +> When using OpenRouter, we default to `mistral-nemo` for generation (via OpenRouter) and `text-embedding-3-small` for embeddings (via OpenAI). +## Using the Retriever Service + +### Executing Queries + +After the retriever service is installed successfully. You can interact with the retriever service using the following HTTP endpoint: + +#### Local Search + +```bash +curl -X POST /v1/graphrag-query \ + -H "Content-Type: application/json" \ + -d '{ + "query": "What is the AR3 Drone?", + "query_type": 2, + "provider": 0 + }' +``` + +#### Global Search + +```bash +curl -X POST /v1/graphrag-query \ + -H "Content-Type: application/json" \ + -d '{ + "query": "What is the AR3 Drone?", + "level": 1, + "query_type": 1, + "provider": 0 + }' +``` + +The request parameters are: +- `query`: Your search query text +- `level`: The community hierarchy level to use for the search (1 for top-level communities) +- `query_type`: The type of search to perform + - `1`: Global Search + - `2`: Local Search +- `provider`: The LLM provider to use + - `0`: OpenAI (or OpenRouter) + - `1`: Triton + +### Health Check + +Monitor the service health: +```bash +GET /v1/health +``` + +## Best Practices + +1. **Choose the Right Search Method**: + - Use Global Search for broad, thematic queries + - Use Local Search for specific entity or relationship queries + + +2. **Performance Considerations**: + - Global Search may take longer due to its map-reduce process + - Local Search is typically faster for concrete queries + From f098711d7eefdc852361c4672421de7f5d7e2497 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 12 Jun 2025 15:15:59 +0200 Subject: [PATCH 07/48] WIP: Add platform overview content from #671 --- site/content/3.13/components/platform.md | 71 ++++++++++++++++++++++++ site/content/3.13/deploy/_index.md | 9 +++ 2 files changed, 80 insertions(+) create mode 100644 site/content/3.13/components/platform.md diff --git a/site/content/3.13/components/platform.md b/site/content/3.13/components/platform.md new file mode 100644 index 0000000000..6b19dec493 --- /dev/null +++ b/site/content/3.13/components/platform.md @@ -0,0 +1,71 @@ +--- +title: The ArangoDB Platform +menuTitle: Platform +weight: 169 +description: >- + The ArangoDB Platform brings everything ArangoDB offers together to a single + solution that you can deploy on-prem or use as a managed service +--- +The ArangoDB Platform is a technical infrastructure that acts as the umbrella +for hosting the entire ArangoDB offering of products. The Platform makes it easy +to deploy and operate the core ArangoDB database system along with any additional +ArangoDB products for machine learning, data explorations, and more. You can +run it on-premise or in the cloud yourself on top of Kubernetes, as well as use +ArangoDB's managed service, the [ArangoGraph Insights Platform](../arangograph/_index.md) +to access all of the platform features. + +## Requirements for self-hosting + +- **Kubernetes**: Orchestrates the selected services that comprise the + ArangoDB Platform, running them in containers for safety and scalability. +- **Licenses**: If you want to use any paid features, you need to purchase the + respective packages. + +## Products available in the ArangoDB Platform + +- **Core database system**: The ArangoDB graph database system for storing + interconnected data. You can use the free Community Edition or the commercial + Enterprise Edition. +- **Graph visualizer**: A web-based tool for exploring your graph data with an + intuitive interface and sophisticated querying capabilities. +- **Data-science suite**: A set of paid machine learning services, APIs, and + user interfaces that are available as a package as well as individual products. + - **Vector embeddings**: You can train machine learning models for later use + in vector search in conjunction with the core database system's `vector` + index type. It allows you to find similar items in your dataset. + - **GraphRAG solutions**: Leverage ArangoDB's Graph, Document, Key-Value, + Full-Text Search, and Vector Search features to streamline knowledge + extraction and retrieval. + - **Txt2AQL**: Unlock natural language querying with a service that converts + user input into ArangoDB Query Language (AQL), powered by fine-tuned + private or public LLMs. + - **GraphRAG Importer**: Extract entities and relationships from large + text-based files, converting unstructured data into a knowledge graph + stored in ArangoDB. + - **GraphRAG Retriever**: Perform semantic similarity searches or aggregate + insights from graph communities with global and local queries. + - **GraphML**: A turnkey solution for graph machine learning for prediction + use cases such as fraud detection, supply chain, healthcare, retail, and + cyber security. + - **Graph Analytics**: A suite of graph algorithms including PageRank, + community detection, and centrality measures with support for GPU + acceleration thanks to Nvidia cuGraph. + - **Jupyter notebooks**: Run a Jupyter kernel in the platform for hosting + interactive notebooks for experimentation and development of applications + that use ArangoDB as their backend. + + + +## Get started with the ArangoDB Platform + +### Use the ArangoDB Platform as a managed service + + + +### Self-host the ArangoDB Platform + + + +## Interfaces + + \ No newline at end of file diff --git a/site/content/3.13/deploy/_index.md b/site/content/3.13/deploy/_index.md index 5a6de1a8d7..687d709c4e 100644 --- a/site/content/3.13/deploy/_index.md +++ b/site/content/3.13/deploy/_index.md @@ -45,6 +45,15 @@ on a single DB-Server node for better performance and with transactional guarantees similar to a single server deployment. OneShard is primarily intended for multi-tenant use cases. +### ArangoDB Platform + +The ArangoDB Platform is the umbrella for deploying and operating the entire +ArangoDB product offering with a unified interface in a Kubernetes cluster. +It is offered for self-hosting on-prem or in the cloud and as a managed service, +superseding the ArangoGraph Insights Platform. + +See [The ArangoDB Platform](../components/platform.md) for details. + ## How to deploy There are different ways to set up and operate ArangoDB. From 5b12ac5a315a432f74e8bcf3f092391920c38c83 Mon Sep 17 00:00:00 2001 From: maxkernbach Date: Wed, 18 Jun 2025 17:24:31 +0200 Subject: [PATCH 08/48] add user-facing-documentation for genai --- genai_docs/GenAI/USER_FACING_DOCUMENTATION.md | 180 ++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 genai_docs/GenAI/USER_FACING_DOCUMENTATION.md diff --git a/genai_docs/GenAI/USER_FACING_DOCUMENTATION.md b/genai_docs/GenAI/USER_FACING_DOCUMENTATION.md new file mode 100644 index 0000000000..433e4bd932 --- /dev/null +++ b/genai_docs/GenAI/USER_FACING_DOCUMENTATION.md @@ -0,0 +1,180 @@ +# GenAI-Service + +## Description + +The GenAI orchestrator service is a service that is able to install, manage, and run AI-based services in your Kubernetes cluster. + +The basic operations are: +- Install a service +- Uninstall a service +- Get the status of a service + +Each unique service does have its own API endpoint for the deployment. + +**Endpoint LLM Host:** +`https://:8529/gen-ai/v1/llmhost` + +While they have their own unique endpoint, all services share the same creation request body and the same response body structure. While the env field is used to define the service specific parameters, like e.g. the model name to use for a llm host service, the labels can be used to filter and identify the services in the platform. All services do support the 'profiles' field, which can be used to define the profile to use for the service. One use case is defining a GPU profile that enables the service to run an LLM on GPU resources. + +## Examples + +### LLM Host Service Creation Request Body + +```json +{ + "env": { + "model_name": "" + } +} +``` + +### Using Labels in Creation Request Body + +```json +{ + "env": { + "model_name": "" + }, + "labels": { + "key1": "value1", + "key2": "value2" + } +} +``` + +**Note:** Labels are optional. Labels can be used to filter and identify services in the platform. If you want to use labels, define them as a key-value pair in the `labels` within the `env` field. + +### Using Profiles in Creation Request Body + +```json +{ + "env": { + "model_name": "", + "profiles": "gpu,internal" + } +} +``` + +**Note:** The `profiles` field is optional. If it is not set, the service will be created with the default profile. Profiles must be present and created in the platform before they can be used. If you want to use profiles, define them as a comma-separated string in the `profiles` within the `env` field. + +The service specific required parameters for the deployment are defined in the corresponding service documentation. + +## Obtaining a Bearer Token + +Before you can authenticate with the GenAI service, you need to obtain a Bearer token. You can generate this token using the ArangoDB authentication API: + +```bash +curl -X POST https://:8529/_open/auth \ + -d '{"username": "your-username", "password": "your-password"}' +``` + +This will return a JWT token that you can use as your Bearer token. For more details about ArangoDB authentication and JWT tokens, see the [ArangoDB Authentication Documentation](https://docs.arangodb.com/stable/develop/http-api/authentication/#jwt-user-tokens). + +## Complete Service Lifecycle Example + +Here's a complete example showing how to install, monitor, and uninstall a RAGLoader service: + +### Step 1: Install the Service + +```bash +curl -X POST https://:8529/gen-ai/v1/graphragimporter \ + -H "Authorization: Bearer " \ + -H "Content-Type: application/json" \ + -d '{ + "env": { + "username": "", + "db_name": "", + "api_provider": "", + "triton_url": "", + "triton_model": "" + } + }' +``` + +**Response:** +```json +{ + "serviceInfo": { + "serviceId": "arangodb-graphrag-importer-of1ml", + "description": "Install complete", + "status": "DEPLOYED", + "namespace": "arangodb-platform-dev" + } +} +``` + +### Step 2: Check Service Status + +```bash +curl -X GET https://:8529/gen-ai/v1/service/arangodb-graphrag-importer-of1ml \ + -H "Authorization: Bearer " +``` + +**Response:** +```json +{ + "serviceInfo": { + "serviceId": "arangodb-graphrag-importer-of1ml", + "description": "Install complete", + "status": "DEPLOYED", + "namespace": "arangodb-platform-dev" + } +} +``` + +### Step 3: Uninstall the Service + +```bash +curl -X DELETE https://:8529/gen-ai/v1/service/arangodb-graphrag-importer-of1ml \ + -H "Authorization: Bearer " +``` + +**Response:** +```json +{ + "serviceInfo": { + "serviceId": "arangodb-graphrag-importer-of1ml", + "description": "Uninstall complete", + "status": "UNINSTALLED", + "namespace": "arangodb-platform-dev" + } +} +``` + +**Notes:** + +- **Service ID**: The `serviceId` from Step 1's response (`arangodb-graphrag-importer-of1ml`) is used in Steps 2 and 3 +- **Authentication**: All requests use the same Bearer token in the `Authorization` header + +### Customizing the Example + +Replace the following values with your actual configuration: +- `` - Your database username +- `` - Target database name +- `` - Your API provider (e.g., "triton") +- `` - Your LLM host service URL +- `` - Your Triton model name (e.g., "mistral-nemo-instruct") +- `` - Your authentication token + +## Service Configuration + +The GenAI orchestrator service is **started by default**. + +It will be available at the following URL: +`https://:8529/gen-ai/v1/service` + +### Health Check + +To test whether the service is running, you can use the following snippet: + +```bash +curl -X GET https://:8529/gen-ai/v1/health +``` + +Expected output on success: `{"status":"OK"}` + +**Note:** Keep in mind that this request requires a valid Bearer token. Without a valid Bearer token, the request will fail. + +## API Reference + +For detailed API documentation, visit: [GenAI-Service API Reference](https://arangoml.github.io/platform-dss-api/GenAI-Service/proto/index.html) \ No newline at end of file From 70779227607405844058a92252bf5af0556336b2 Mon Sep 17 00:00:00 2001 From: maxkernbach Date: Wed, 18 Jun 2025 17:24:59 +0200 Subject: [PATCH 09/48] add user-facing-documentation for arangodb-mlflow --- .../USER_FACING_DOCUMENTATION.md | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 genai_docs/arangodb-mlflow/USER_FACING_DOCUMENTATION.md diff --git a/genai_docs/arangodb-mlflow/USER_FACING_DOCUMENTATION.md b/genai_docs/arangodb-mlflow/USER_FACING_DOCUMENTATION.md new file mode 100644 index 0000000000..b25ec4a74e --- /dev/null +++ b/genai_docs/arangodb-mlflow/USER_FACING_DOCUMENTATION.md @@ -0,0 +1,122 @@ +# ArangoDB-MLflow-Service + +## Overview + +The ArangoDB MLflow service is a service that hosts the official MLflow application in your Kubernetes cluster and connects it automatically to the ArangoDB environment, e.g. for registering the LLM to be self-hosted and used by services requiring LLMs (natural-language-service, RAGLoader, RAGRetriever). + +MLflow is an open-source platform, purpose-built to assist machine learning practitioners and teams in handling the complexities of the machine learning process. It focuses on the full lifecycle for machine learning projects, ensuring that each phase is manageable, traceable, and reproducible. + +The main purpose of our MLflow integration is to provide a seamless experience for users to manage their machine learning models and experiments within the ArangoDB environment. For example, any spawned LLM host service will automatically be linked to the MLflow service and will be able to fetch any registered model from the MLflow model registry. + +**Note:** The detailed instructions about how to organize the format of a model for the dedicated LLM host service can be found in their respective documentation. + +## Core Components + +MLflow consists of the following core components: + +- **Model Registry**: A centralized model store, set of APIs, and UI to collaboratively manage the full lifecycle of an MLflow Model, including model lineage, versioning, stage transitions, and annotations. + +- **Experiment Tracking**: Provides an API and UI for logging parameters, code versions, metrics, and artifacts during the ML process, allowing for comparison of multiple runs across different users. + +- **Model Packaging**: Offers a standard format for packaging models from any framework. + +- **Serving**: Facilitates the deployment of models to various platforms. Within the ArangoDB environment, this enables the integration with services that utilize self-hosted LLMs. + +- **Evaluation**: Provides tools for in-depth model analysis, facilitating objective model comparison. + +- **Observability**: Ensures that the ML lifecycle is traceable and reproducible through various metrics and logs. + +## Getting Started + +The ArangoDB MLflow service is **started by default**. + +It will be automatically spawned and available at the following URL: + +``` +https://:8529/mlflow/ +``` + +You can interact with the ArangoDB MLflow service in two ways: +- **Programmatically**: Using the official MLflow client +- **Web Interface**: Directly through your browser at the URL above + +To use the programmatic API, please use the **official MLflow client**. + +**Note:** The ArangoDB MLflow service requires authentication. You need a valid Bearer token to access the service. + +#### Obtaining a Bearer Token + +Before you can authenticate with the MLflow service, you need to obtain a Bearer token. You can generate this token using the ArangoDB authentication API: + +```bash +curl -X POST https://:8529/_open/auth \ + -d '{"username": "your-username", "password": "your-password"}' +``` + +This will return a JWT token that you can use as your Bearer token. For more details about ArangoDB authentication and JWT tokens, see the [ArangoDB Authentication Documentation](https://docs.arangodb.com/stable/develop/http-api/authentication/#jwt-user-tokens). + +### Installation + +First, install the MLflow client: + +```bash +pip install mlflow +``` + +### Programmatic Access + +There are two approaches for programmatic access to your ArangoDB MLflow service: + +#### Approach 1: Configure in Python Code + +```python +import mlflow +import os + +# Set authentication and tracking URI +os.environ['MLFLOW_TRACKING_TOKEN'] = 'your-bearer-token-here' +mlflow.set_tracking_uri("https://:8529/mlflow/") + +# Start logging your experiments +with mlflow.start_run(): + mlflow.log_artifact("local_file.txt") +``` + +#### Approach 2: Use Environment Variables + +Set the environment variables in your shell: + +```bash +export MLFLOW_TRACKING_URI="https://:8529/mlflow/" +export MLFLOW_TRACKING_TOKEN="your-bearer-token-here" +``` + +Then use MLflow normally in your Python code: + +```python +import mlflow + +# MLflow automatically uses the environment variables +with mlflow.start_run(): + mlflow.log_artifact("local_file.txt") +``` + +### Health Check + +To test whether the service is running, you can use the following snippet: + +```bash +curl -H "Authorization: Bearer your-bearer-token-here" https://:8529/mlflow/health +``` + +Expected output on success: HTTP `200` status with response body `OK` + +## API Reference + +For detailed API documentation, refer to the official MLflow REST API documentation: +[MLflow REST API Reference](https://mlflow.org/docs/latest/api_reference/rest-api.html) + +## Additional Resources + +The official MLflow documentation can be found at: +[MLflow Documentation](https://mlflow.org/docs/latest/index.html) \ No newline at end of file From 7dc6c94daee8cab52138f7671c025716242f7d4d Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 26 Jun 2025 09:39:39 +0200 Subject: [PATCH 10/48] Re-arrange content --- site/content/3.13/components/platform.md | 2 +- site/content/3.13/data-science/_index.md | 36 ++++--- .../{hybrid-rag.md => graphrag/_index.md} | 48 ++-------- .../data-science/graphrag/services/_index.md | 23 +++++ .../data-science/graphrag/services/gen-ai.md | 17 ++-- .../data-science/graphrag/services/mlflow.md | 12 ++- .../services/natural-language-to-aql.md | 95 +++++++++++-------- .../graphrag/services/rag-loader.md | 21 +++- .../graphrag/services/rag-retriever.md | 15 ++- .../{adapters => integrations}/_index.md | 6 +- .../arangodb-cugraph-adapter.md | 5 +- .../arangodb-dgl-adapter.md | 2 + .../arangodb-networkx-adapter.md | 5 +- .../arangodb-pyg-adapter.md | 2 + .../arangodb-rdf-adapter.md | 2 + .../data-science/integrations/langchain.md | 29 ++++++ 16 files changed, 200 insertions(+), 120 deletions(-) rename site/content/3.13/data-science/{hybrid-rag.md => graphrag/_index.md} (58%) create mode 100644 site/content/3.13/data-science/graphrag/services/_index.md rename genai_docs/GenAI/USER_FACING_DOCUMENTATION.md => site/content/3.13/data-science/graphrag/services/gen-ai.md (93%) rename genai_docs/arangodb-mlflow/USER_FACING_DOCUMENTATION.md => site/content/3.13/data-science/graphrag/services/mlflow.md (95%) rename genai_docs/natural_language_service/USER_GUIDE.md => site/content/3.13/data-science/graphrag/services/natural-language-to-aql.md (82%) rename genai_docs/RagLoader/USER_GUIDE.md => site/content/3.13/data-science/graphrag/services/rag-loader.md (94%) rename genai_docs/RagRetriever/USER_GUIDE.md => site/content/3.13/data-science/graphrag/services/rag-retriever.md (95%) rename site/content/3.13/data-science/{adapters => integrations}/_index.md (88%) rename site/content/3.13/data-science/{adapters => integrations}/arangodb-cugraph-adapter.md (99%) rename site/content/3.13/data-science/{adapters => integrations}/arangodb-dgl-adapter.md (99%) rename site/content/3.13/data-science/{adapters => integrations}/arangodb-networkx-adapter.md (99%) rename site/content/3.13/data-science/{adapters => integrations}/arangodb-pyg-adapter.md (99%) rename site/content/3.13/data-science/{adapters => integrations}/arangodb-rdf-adapter.md (99%) create mode 100644 site/content/3.13/data-science/integrations/langchain.md diff --git a/site/content/3.13/components/platform.md b/site/content/3.13/components/platform.md index 6b19dec493..121a67efe1 100644 --- a/site/content/3.13/components/platform.md +++ b/site/content/3.13/components/platform.md @@ -41,7 +41,7 @@ to access all of the platform features. private or public LLMs. - **GraphRAG Importer**: Extract entities and relationships from large text-based files, converting unstructured data into a knowledge graph - stored in ArangoDB. + stored in ArangoDB. - **GraphRAG Retriever**: Perform semantic similarity searches or aggregate insights from graph communities with global and local queries. - **GraphML**: A turnkey solution for graph machine learning for prediction diff --git a/site/content/3.13/data-science/_index.md b/site/content/3.13/data-science/_index.md index b3158d8fc6..c6bcbee608 100644 --- a/site/content/3.13/data-science/_index.md +++ b/site/content/3.13/data-science/_index.md @@ -1,6 +1,6 @@ --- -title: Data Science -menuTitle: Data Science +title: Generative Artificial Intelligence (GenAI) and Data Science +menuTitle: GenAI & Data Science weight: 115 description: >- ArangoDB's set of tools and technologies enables analytics, machine learning, @@ -13,7 +13,7 @@ data science applications. The core database system includes multi-model storage of information with scalable graph and information retrieval capabilities that you can directly use for your research and product development. -ArangoDB also offers a dedicated Data Science Suite, using the database core +ArangoDB also offers a dedicated GenAI Suite, using the database core as the foundation for higher-level features. Whether you want to turbocharge generative AI applications with a GraphRAG solution or apply analytics and machine learning to graph data at scale, ArangoDB covers these needs. @@ -25,17 +25,15 @@ engineering space can make use of ArangoDB's set of tools and technologies that enable analytics and machine learning on graph data. --> -## Data Science Suite +## GenAI Suite -The Data Science Suite (DSS) is comprised of three major components: +The GenAI Suite is comprised of two major components: -- [**HybridRAG**](#hybridrag): A complete solution for extracting entities +- [**GraphRAG**](#graphrag): A complete solution for extracting entities from text files to create a knowledge graph that you can then query with a natural language interface. - [**GraphML**](#graphml): Apply machine learning to graphs for link prediction, classification, and similar tasks. -- [**Graph Analytics**](#graph-analytics): Run graph algorithms such as PageRank - on dedicated compute resources. Each component has an intuitive graphical user interface integrated into the ArangoDB Platform web interface, guiding you through the process. @@ -52,7 +50,17 @@ Alongside these components, you also get the following additional features: the machine learning lifecycle. - **Adapters**: Use ArangoDB together with cuGraph, NetworkX, and other tools. - **Application Programming Interfaces**: Use the underlying APIs of the - Data Science Suite services and build your own integrations. + GenAI Suite services and build your own integrations. + +## Other tools and features + + + +The ArangoDB Platform includes the following features independent of the +GenAI Suite: + +- [**Graph Analytics**](#graph-analytics): Run graph algorithms such as PageRank + on dedicated compute resources. ## From graph to AI @@ -120,19 +128,19 @@ GraphML can answer questions like: For ArangoDB's enterprise-ready, graph-powered machine learning offering, see [ArangoGraphML](graphml/_index.md). -### HybridRAG +### GraphRAG -HybridRAG is ArangoDB's turn-key solution to turn your organization's data into +GraphRAG is ArangoDB's turn-key solution to turn your organization's data into a knowledge graph and let everyone utilize the knowledge by asking questions in natural language. -HybridRAG combines vector search for retrieving related text snippets -with graph-based retrieval augmented generation (GraphRAG) for context expansion +GraphRAG combines vector search for retrieving related text snippets +with graph-based retrieval augmented generation for context expansion and relationship discovery. This lets a large language model (LLM) generate answers that are accurate, context-aware, and chronologically structured. This approach combats the common problem of hallucination. -To learn more, see the [HybridRAG](hybrid-rag.md) documentation. +To learn more, see the [GraphRAG](graphrag/_index.md) documentation. ## Sample datasets diff --git a/site/content/3.13/data-science/hybrid-rag.md b/site/content/3.13/data-science/graphrag/_index.md similarity index 58% rename from site/content/3.13/data-science/hybrid-rag.md rename to site/content/3.13/data-science/graphrag/_index.md index c11cdaa8eb..712cb9c0b2 100644 --- a/site/content/3.13/data-science/hybrid-rag.md +++ b/site/content/3.13/data-science/graphrag/_index.md @@ -1,10 +1,10 @@ --- -title: Graph-powered HybridRAG -menuTitle: HybridRAG +title: GraphRAG +menuTitle: GraphRAG weight: 10 description: >- - ArangoDB's HybridRAG combines graph-based retrieval augmented generation - (GraphRAG) with Large Language Models (LLMs) for turbocharged Gen AI solutions + ArangoDB's GraphRAG solution combines graph-based retrieval augmented generation + with Large Language Models (LLMs) for turbocharged Gen AI solutions aliases: llm-knowledge-graphs # TODO: Repurpose for GenAI @@ -29,13 +29,13 @@ ArangoDB's unique capabilities and flexible integration of knowledge graphs and LLMs provide a powerful and efficient solution for anyone seeking to extract valuable insights from diverse datasets. -The HybridRAG component of the Data Science Suite brings all the capabilities +The GraphRAG component of the GenAI Suite brings all the capabilities together with an easy-to-use interface so you can make the knowledge accessible to your organization. -## HybridRAG +## ArangoDB GraphRAG -ArangoDB's HybridRAG solution democratizes the creation and usage of knowledge +ArangoDB's GraphRAG solution democratizes the creation and usage of knowledge graphs with a unique combination of vector search, graphs, and LLMs in a single product. @@ -60,16 +60,10 @@ the following tasks: - End-to-end knowledge graph construction - (Text) Embeddings -![ArangoDB Knowledge Graphs and LLMs](../../images/ArangoDB-knowledge-graphs-meets-llms.png) +![ArangoDB Knowledge Graphs and LLMs](../../../images/ArangoDB-knowledge-graphs-meets-llms.png) ### Examples -### Services - -#### Service A - -#### Service B - ### Interfaces {{< tabs "interfaces" >}} @@ -79,31 +73,9 @@ the following tasks: {{< /tab >}} {{< tab "cURL" >}} +``` curl http://localhost:8529/gen-ai/ +``` {{< /tab >}} {{< /tabs >}} - -#### ArangoDB and LangChain - -[LangChain](https://www.langchain.com/) is a framework for developing applications -powered by language models. - -LangChain enables applications that are: -- Data-aware (connect a language model to other sources of data) -- Agentic (allow a language model to interact with its environment) - -The ArangoDB integration with LangChain provides you the ability to analyze -data seamlessly via natural language, eliminating the need for query language -design. By using LLM chat models such as OpenAI’s ChatGPT, you can "speak" to -your data instead of querying it. - -##### Get started with ArangoDB QA chain - -The [ArangoDB QA chain notebook](https://langchain-langchain.vercel.app/docs/use_cases/more/graph/graph_arangodb_qa.html) -shows how to use LLMs to provide a natural language interface to an ArangoDB -instance. - -Run the notebook directly in [Google Colab](https://colab.research.google.com/github/arangodb/interactive_tutorials/blob/master/notebooks/Langchain.ipynb). - -See also other [machine learning interactive tutorials](https://github.com/arangodb/interactive_tutorials#machine-learning). diff --git a/site/content/3.13/data-science/graphrag/services/_index.md b/site/content/3.13/data-science/graphrag/services/_index.md new file mode 100644 index 0000000000..8f7a628772 --- /dev/null +++ b/site/content/3.13/data-science/graphrag/services/_index.md @@ -0,0 +1,23 @@ +--- +title: GraphRAG services +menuTitle: Services +descriptions: >- + The GraphRAG solution is implemented as a set of Kubernetes services +weight: 10 +--- +## Services + +### GenAI + +### RAGLoader + +### RAGRetriever + +### LLM fine tuning + +### Auto-Tuna + +### Triton integration + +### Natural language service + diff --git a/genai_docs/GenAI/USER_FACING_DOCUMENTATION.md b/site/content/3.13/data-science/graphrag/services/gen-ai.md similarity index 93% rename from genai_docs/GenAI/USER_FACING_DOCUMENTATION.md rename to site/content/3.13/data-science/graphrag/services/gen-ai.md index 433e4bd932..8f13367645 100644 --- a/genai_docs/GenAI/USER_FACING_DOCUMENTATION.md +++ b/site/content/3.13/data-science/graphrag/services/gen-ai.md @@ -1,10 +1,15 @@ -# GenAI-Service - +--- +title: GenAI Orchestration Service +menuTitle: GenAI +description: >- + The GenAI orchestrator service installs, manages, and runs AI-based services + in your Kubernetes cluster +# TODO: Shouldn't this refer to the ArangoDB Platform instead? +weight: 5 +--- ## Description -The GenAI orchestrator service is a service that is able to install, manage, and run AI-based services in your Kubernetes cluster. - -The basic operations are: +The basic operations that the GenAI orchestration service carries out are the following: - Install a service - Uninstall a service - Get the status of a service @@ -177,4 +182,4 @@ Expected output on success: `{"status":"OK"}` ## API Reference -For detailed API documentation, visit: [GenAI-Service API Reference](https://arangoml.github.io/platform-dss-api/GenAI-Service/proto/index.html) \ No newline at end of file +For detailed API documentation, visit: [GenAI-Service API Reference](https://arangoml.github.io/platform-dss-api/GenAI-Service/proto/index.html) diff --git a/genai_docs/arangodb-mlflow/USER_FACING_DOCUMENTATION.md b/site/content/3.13/data-science/graphrag/services/mlflow.md similarity index 95% rename from genai_docs/arangodb-mlflow/USER_FACING_DOCUMENTATION.md rename to site/content/3.13/data-science/graphrag/services/mlflow.md index b25ec4a74e..3b0dabb30e 100644 --- a/genai_docs/arangodb-mlflow/USER_FACING_DOCUMENTATION.md +++ b/site/content/3.13/data-science/graphrag/services/mlflow.md @@ -1,5 +1,11 @@ -# ArangoDB-MLflow-Service - +--- +title: ArangoDB MLflow Service +menuTitle: MLflow +description: >- + The ArangoDB MLflow Service integrates the MLflow platform for managing the + full machine learning lifecycle into the ArangoDB Platform +weight: 25 +--- ## Overview The ArangoDB MLflow service is a service that hosts the official MLflow application in your Kubernetes cluster and connects it automatically to the ArangoDB environment, e.g. for registering the LLM to be self-hosted and used by services requiring LLMs (natural-language-service, RAGLoader, RAGRetriever). @@ -119,4 +125,4 @@ For detailed API documentation, refer to the official MLflow REST API documentat ## Additional Resources The official MLflow documentation can be found at: -[MLflow Documentation](https://mlflow.org/docs/latest/index.html) \ No newline at end of file +[MLflow Documentation](https://mlflow.org/docs/latest/index.html) diff --git a/genai_docs/natural_language_service/USER_GUIDE.md b/site/content/3.13/data-science/graphrag/services/natural-language-to-aql.md similarity index 82% rename from genai_docs/natural_language_service/USER_GUIDE.md rename to site/content/3.13/data-science/graphrag/services/natural-language-to-aql.md index bf92cf1f3a..1aab97abc1 100644 --- a/genai_docs/natural_language_service/USER_GUIDE.md +++ b/site/content/3.13/data-science/graphrag/services/natural-language-to-aql.md @@ -1,9 +1,18 @@ -# Natural Language to AQL Translation Service (txt2aql) - +--- +title: Natural Language to AQL Translation Service (txt2aql) +menuTitle: txt2aql +description: >- + The Natural Language to AQL Translation Service is a powerful tool that allows + you to interact with your ArangoDB database using natural language queries +weight: 20 +--- ## Overview -The Natural Language to AQL Translation Service is a powerful tool that allows you to interact with your ArangoDB database using natural language queries. It translates your questions and commands into AQL (ArangoDB Query Language), executes the queries, and provides responses in natural language. + +This service translates your questions and commands into AQL (ArangoDB Query Language), +executes the queries, and provides responses in natural language. ## Features + - Natural language to AQL query translation - Support for multiple LLM providers (via OpenAI API or a self-hosted Triton Inference Server) - RESTful and gRPC interfaces @@ -13,12 +22,14 @@ The Natural Language to AQL Translation Service is a powerful tool that allows y ## Getting Started ### Prerequisites + - ArangoDB instance - OpenAI API key (if using OpenAI as provider) - Triton URL and model name (if using Triton as provider) ### Configuration + The following environment variables are set at installation time and used at runtime: ```bash @@ -42,9 +53,11 @@ TRITON_TIMEOUT= # Optional ``` ### Starting the Service + To start the service, use GenAI service endpoint `CreateGraphRag`. Please refer to the documentation of GenAI service for more information on how to use it. ### Required Parameters + These parameters must be provided in the install request sent to GenAI service. - `username`: Database username for authentication @@ -63,64 +76,62 @@ These parameters must be provided in the install request sent to GenAI service. - `triton_url`: URL of the Triton inference server - `triton_model`: Model name to use with Triton - ## API Reference ### REST Endpoints 1. **Process Text** - Ask general questions to the LLM and get a natural language response. This endpoint does not query the database. -```bash -POST /v1/process_text -Content-Type: application/json - -{ - "input_text": "What are the advantages of graph databases?" -} -``` + ```bash + POST /v1/process_text + Content-Type: application/json + + { + "input_text": "What are the advantages of graph databases?" + } + ``` 2. **Translate Query** - Convert natural language to AQL and query the database -```bash -POST /v1/translate_query -Content-Type: application/json - -{ - "input_text": "Find all users who are friends with John", - "options": { - "output_formats": ["NL", "AQL", "JSON"] - } -} -``` - + ```bash + POST /v1/translate_query + Content-Type: application/json + + { + "input_text": "Find all users who are friends with John", + "options": { + "output_formats": ["NL", "AQL", "JSON"] + } + } + ``` 3. **Health Check** - Monitor service health -```bash -GET /v1/health -``` + ```bash + GET /v1/health + ``` ### gRPC Endpoints The service also provides gRPC endpoints for more efficient communication: 1. **Process Text** -```bash -grpcurl -plaintext -d '{"input_text": "Hello world"}' \ - localhost:9090 txt2aql.Txt2AqlService/ProcessText -``` + ```bash + grpcurl -plaintext -d '{"input_text": "Hello world"}' \ + localhost:9090 txt2aql.Txt2AqlService/ProcessText + ``` 2. **Translate Query** -```bash -grpcurl -plaintext -d '{ - "input_text": "Find all characters from House Stark", - "options": { - "output_formats": ["NL","AQL","JSON"] - } -}' localhost:9090 txt2aql.Txt2AqlService/TranslateQuery -``` + ```bash + grpcurl -plaintext -d '{ + "input_text": "Find all characters from House Stark", + "options": { + "output_formats": ["NL","AQL","JSON"] + } + }' localhost:9090 txt2aql.Txt2AqlService/TranslateQuery + ``` 3. **Health Check** -```bash -grpcurl -plaintext localhost:9090 txt2aql.Txt2AqlService/HealthCheck -``` + ```bash + grpcurl -plaintext localhost:9090 txt2aql.Txt2AqlService/HealthCheck + ``` ## Output Formats diff --git a/genai_docs/RagLoader/USER_GUIDE.md b/site/content/3.13/data-science/graphrag/services/rag-loader.md similarity index 94% rename from genai_docs/RagLoader/USER_GUIDE.md rename to site/content/3.13/data-science/graphrag/services/rag-loader.md index 73b6506ebb..eb94d7a457 100644 --- a/genai_docs/RagLoader/USER_GUIDE.md +++ b/site/content/3.13/data-science/graphrag/services/rag-loader.md @@ -1,11 +1,22 @@ -# RagLoader User Guide - +--- +title: RagLoader Service +menuTitle: RagLoader +description: >- + The RagLoader service helps you transform your text document into knowledge graph, + making it easier to analyze and understand complex information +weight: 10 +--- ## Overview -The RagLoader service helps you transform your text document into knowledge graph, making it easier to analyze and understand complex information. It works with individual text files, supporting plain text format with UTF-8 encoding or markdown files. - -The Loader takes your text, analyzes it using the configured language model, and creates a structured knowledge graph. This graph is then imported into your ArangoDB database, where you can query and analyze the relationships between different concepts in your document with our RagRetriever service. +The RagLoader service lets you turn text files into a knowledge graph. +It supports the following text formats with UTF-8 encoding: +- Plain text +- Markdown +The Loader takes your text, analyzes it using the configured language model, and +creates a structured knowledge graph. This graph is then imported into your +ArangoDB database, where you can query and analyze the relationships between +different concepts in your document with our RagRetriever service. ## How ArangoDB Collections looks after Import Process: diff --git a/genai_docs/RagRetriever/USER_GUIDE.md b/site/content/3.13/data-science/graphrag/services/rag-retriever.md similarity index 95% rename from genai_docs/RagRetriever/USER_GUIDE.md rename to site/content/3.13/data-science/graphrag/services/rag-retriever.md index 5a11fb8b9c..2b1064df77 100644 --- a/genai_docs/RagRetriever/USER_GUIDE.md +++ b/site/content/3.13/data-science/graphrag/services/rag-retriever.md @@ -1,8 +1,15 @@ -# RagRetriever User Guide - +--- +title: RagRetriever Service +menuTitle: RagRetriever +description: >- + RagRetriever is a powerful service that enables intelligent search and + retrieval from knowledge graphs created by the GraphRAG Importer +# TODO: GraphRAG Importer == RagLoader? +weight: 15 +--- ## Summary -RagRetriever is a powerful service that enables intelligent search and retrieval from knowledge graphs created by GraphRAG Importer. It offers two distinct search methods: +The RagRetriever service offers two distinct search methods: - **Global Search**: Analyzes entire document to identify themes and patterns, perfect for high-level insights and comprehensive summaries. - **Local Search**: Focuses on specific entities and their relationships, ideal for detailed queries about particular concepts. @@ -16,6 +23,8 @@ Key features: - Integration with ArangoDB knowledge graphs - Configurable community hierarchy levels + + ## Overview The RagRetriever service enables intelligent search and retrieval of information from your knowledge graph. It provides two powerful search methods - Global Search and Local Search - that leverage the structured knowledge graph created by the GraphRAG Importer to deliver accurate and contextually relevant responses to your natural language queries. diff --git a/site/content/3.13/data-science/adapters/_index.md b/site/content/3.13/data-science/integrations/_index.md similarity index 88% rename from site/content/3.13/data-science/adapters/_index.md rename to site/content/3.13/data-science/integrations/_index.md index 75d8c4558b..3b1a028811 100644 --- a/site/content/3.13/data-science/adapters/_index.md +++ b/site/content/3.13/data-science/integrations/_index.md @@ -1,10 +1,12 @@ --- -title: Adapters -menuTitle: Adapters +title: ArangoDB integrations for data science +menuTitle: Integrations weight: 50 description: >- ArangoDB offers multiple adapters that enable seamless integration with data science tools +aliases: + - adapters --- ArangoDB Adapters provide a convenient way to integrate ArangoDB with popular data science tools. By enabling you to to use your preferred programming diff --git a/site/content/3.13/data-science/adapters/arangodb-cugraph-adapter.md b/site/content/3.13/data-science/integrations/arangodb-cugraph-adapter.md similarity index 99% rename from site/content/3.13/data-science/adapters/arangodb-cugraph-adapter.md rename to site/content/3.13/data-science/integrations/arangodb-cugraph-adapter.md index fffdffc4a6..8d73c6fe06 100644 --- a/site/content/3.13/data-science/adapters/arangodb-cugraph-adapter.md +++ b/site/content/3.13/data-science/integrations/arangodb-cugraph-adapter.md @@ -4,16 +4,15 @@ menuTitle: cuGraph weight: 10 description: >- The cuGraph Adapter exports graphs from ArangoDB into RAPIDS cuGraph, a library of collective GPU-accelerated graph algorithms, and vice-versa +aliases: + - ../adapters/arangodb-cugraph-adapter --- - - {{< tip >}} ArangoDB now has a closer integration with NetworkX allowing NetworkX users to persist their graphs in ArangoDB & leverage GPU-accelerated graph analytics via cuGraph. [Learn more here](https://arangodb.com/introducing-the-arangodb-networkx-persistence-layer/). {{< /tip >}} - While offering a similar API and set of graph algorithms to NetworkX, [RAPIDS cuGraph](https://docs.rapids.ai/api/cugraph/stable/) library is GPU-based. Especially for large graphs, this diff --git a/site/content/3.13/data-science/adapters/arangodb-dgl-adapter.md b/site/content/3.13/data-science/integrations/arangodb-dgl-adapter.md similarity index 99% rename from site/content/3.13/data-science/adapters/arangodb-dgl-adapter.md rename to site/content/3.13/data-science/integrations/arangodb-dgl-adapter.md index 4d654bfd6c..efb246db4f 100644 --- a/site/content/3.13/data-science/adapters/arangodb-dgl-adapter.md +++ b/site/content/3.13/data-science/integrations/arangodb-dgl-adapter.md @@ -4,6 +4,8 @@ menuTitle: DGL weight: 20 description: >- The DGL Adapter exports graphs from ArangoDB into Deep Graph Library (DGL), a Python package for graph neural networks, and vice-versa +aliases: + - ../adapters/arangodb-dgl-adapter --- The [Deep Graph Library (DGL)](https://www.dgl.ai/) is an easy-to-use, high performance and scalable diff --git a/site/content/3.13/data-science/adapters/arangodb-networkx-adapter.md b/site/content/3.13/data-science/integrations/arangodb-networkx-adapter.md similarity index 99% rename from site/content/3.13/data-science/adapters/arangodb-networkx-adapter.md rename to site/content/3.13/data-science/integrations/arangodb-networkx-adapter.md index 58963947b0..fac703e0f0 100644 --- a/site/content/3.13/data-science/adapters/arangodb-networkx-adapter.md +++ b/site/content/3.13/data-science/integrations/arangodb-networkx-adapter.md @@ -4,16 +4,15 @@ menuTitle: NetworkX weight: 5 description: >- The NetworkX Adapter allows you to export graphs from ArangoDB into NetworkX for graph analysis with Python and vice-versa +aliases: + - ../adapters/arangodb-networkx-adapter --- - - {{< tip >}} ArangoDB now has a closer integration with NetworkX allowing NetworkX users to persist their graphs in ArangoDB & leverage GPU-accelerated graph analytics via cuGraph. [Learn more here](https://arangodb.com/introducing-the-arangodb-networkx-persistence-layer/). {{< /tip >}} - [NetworkX](https://networkx.org/) is a commonly used tool for analysis of network-data. If your analytics use cases require the use of all your graph data, for example, diff --git a/site/content/3.13/data-science/adapters/arangodb-pyg-adapter.md b/site/content/3.13/data-science/integrations/arangodb-pyg-adapter.md similarity index 99% rename from site/content/3.13/data-science/adapters/arangodb-pyg-adapter.md rename to site/content/3.13/data-science/integrations/arangodb-pyg-adapter.md index 361e602a7c..f24a681c3d 100644 --- a/site/content/3.13/data-science/adapters/arangodb-pyg-adapter.md +++ b/site/content/3.13/data-science/integrations/arangodb-pyg-adapter.md @@ -4,6 +4,8 @@ menuTitle: PyG weight: 15 description: >- The PyG Adapter exports Graphs from ArangoDB into PyTorch Geometric (PyG), a PyTorch-based Graph Neural Network library, and vice-versa +aliases: + - ../adapters/arangodb-pyg-adapter --- PyTorch Geometric (PyG) is a library built upon [PyTorch](https://pytorch.org/) to easily write and train Graph Neural Networks (GNNs) for a wide range of diff --git a/site/content/3.13/data-science/adapters/arangodb-rdf-adapter.md b/site/content/3.13/data-science/integrations/arangodb-rdf-adapter.md similarity index 99% rename from site/content/3.13/data-science/adapters/arangodb-rdf-adapter.md rename to site/content/3.13/data-science/integrations/arangodb-rdf-adapter.md index 87c171a7de..e0c2f71e77 100644 --- a/site/content/3.13/data-science/adapters/arangodb-rdf-adapter.md +++ b/site/content/3.13/data-science/integrations/arangodb-rdf-adapter.md @@ -4,6 +4,8 @@ menuTitle: RDF weight: 25 description: >- ArangoRDF allows you to export graphs from ArangoDB into RDF and vice-versa +aliases: + - ../adapters/arangodb-rdf-adapter --- RDF is a standard model for data interchange on the Web. RDF has features that facilitate data merging even if the underlying schemas differ, and it diff --git a/site/content/3.13/data-science/integrations/langchain.md b/site/content/3.13/data-science/integrations/langchain.md new file mode 100644 index 0000000000..48da4bd49b --- /dev/null +++ b/site/content/3.13/data-science/integrations/langchain.md @@ -0,0 +1,29 @@ +--- +title: ArangoDB integration with LangChain +menuTitle: LangChain +weight: 30 +description: >- + A LangChain integration for using LLMs to provide a natural language interface + for the data stored in ArangoDB +--- +[LangChain](https://www.langchain.com/) is a framework for developing applications +powered by language models. + +LangChain enables applications that are: +- Data-aware (connect a language model to other sources of data) +- Agentic (allow a language model to interact with its environment) + +The ArangoDB integration with LangChain provides you the ability to analyze +data seamlessly via natural language, eliminating the need for query language +design. By using LLM chat models such as OpenAI's ChatGPT, you can "speak" to +your data instead of querying it. + +## Get started with ArangoDB QA chain + +The [ArangoDB QA chain notebook](https://langchain-langchain.vercel.app/docs/integrations/graphs/arangodb/) +shows how to use LLMs to provide a natural language interface to an ArangoDB +instance. + +Run the notebook directly in [Google Colab](https://colab.research.google.com/github/arangodb/interactive_tutorials/blob/master/notebooks/Langchain.ipynb). + +See also other [machine learning interactive tutorials](https://github.com/arangodb/interactive_tutorials#machine-learning). From d11e700a85f8ddf5952ac58c6982efb12944beaf Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 26 Jun 2025 10:50:08 +0200 Subject: [PATCH 11/48] Fix links --- site/content/3.13/aql/functions/vector.md | 2 +- .../indexing/working-with-indexes/vector-indexes.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/site/content/3.13/aql/functions/vector.md b/site/content/3.13/aql/functions/vector.md index e6a6de0134..45341b8ea8 100644 --- a/site/content/3.13/aql/functions/vector.md +++ b/site/content/3.13/aql/functions/vector.md @@ -12,7 +12,7 @@ To use vector search, you need to have vector embeddings stored in documents and the attribute that stores them needs to be indexed by a [vector index](../../index-and-search/indexing/working-with-indexes/vector-indexes.md). -You can calculate vector embeddings using [ArangoDB's GraphML](../../data-science/arangographml/_index.md) +You can calculate vector embeddings using [ArangoDB's GraphML](../../data-science/graphml/_index.md) capabilities (available in ArangoGraph) or using external tools. {{< warning >}} diff --git a/site/content/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md b/site/content/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md index 90b82edbf9..236093878b 100644 --- a/site/content/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md +++ b/site/content/3.13/index-and-search/indexing/working-with-indexes/vector-indexes.md @@ -33,7 +33,7 @@ startup option needs to be enabled on the deployment you want to restore to. {{< /warning >}} 1. Enable the experimental vector index feature. -2. Calculate vector embeddings using [ArangoDB's GraphML](../../../data-science/arangographml/_index.md) +2. Calculate vector embeddings using [ArangoDB's GraphML](../../../data-science/graphml/_index.md) capabilities (available in ArangoGraph) or using external tools. Store each vector as an attribute in the respective document. 3. Create a vector index over this attribute. You need to choose which From e82b2f83ffc12bd7d88edc315216aac56703f04a Mon Sep 17 00:00:00 2001 From: Paula Date: Thu, 3 Jul 2025 13:26:30 +0200 Subject: [PATCH 12/48] fix conflicts --- .../3.13/data-science/graphml/_index.md | 2 +- .../3.13/data-science/graphml/deploy.md | 78 -- .../data-science/graphml/getting-started.md | 968 ------------------ 3 files changed, 1 insertion(+), 1047 deletions(-) delete mode 100644 site/content/3.13/data-science/graphml/deploy.md delete mode 100644 site/content/3.13/data-science/graphml/getting-started.md diff --git a/site/content/3.13/data-science/graphml/_index.md b/site/content/3.13/data-science/graphml/_index.md index ba8e2d6c46..00c79ec1a0 100644 --- a/site/content/3.13/data-science/graphml/_index.md +++ b/site/content/3.13/data-science/graphml/_index.md @@ -1,7 +1,7 @@ --- title: ArangoDB GraphML menuTitle: GraphML -weight: 125 +weight: 15 description: >- Boost your machine learning models with graph data using ArangoDB's advanced GraphML capabilities aliases: diff --git a/site/content/3.13/data-science/graphml/deploy.md b/site/content/3.13/data-science/graphml/deploy.md deleted file mode 100644 index 78676dd08c..0000000000 --- a/site/content/3.13/data-science/graphml/deploy.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Deploy ArangoGraphML -menuTitle: Deploy -weight: 5 -description: >- - You can deploy ArangoGraphML in your own Kubernetes cluster or use the managed - cloud service that comes with a ready-to-go, pre-configured environment -aliases: - - ../arangographml/deploy ---- - -## Managed cloud service versus self-managed - -ArangoDB offers two deployment options, tailored to suit diverse requirements -and infrastructure preferences: -- Managed cloud service via the [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) -- Self-managed solution via the [ArangoDB Kubernetes Operator](https://github.com/arangodb/kube-arangodb) - -### ArangoGraphML - -ArangoGraphML provides enterprise-ready Graph Machine Learning as a -Cloud Service via Jupyter Notebooks that run on the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). - -{{< tip >}} -To get access to ArangoGraphML services and packages, -[get in touch](https://www.arangodb.com/contact/) -with the ArangoDB team. -{{< /tip >}} - -- **Accessible at all levels** - - Low code UI - - Notebooks - - APIs -- **Full usability** - - MLOps lifecycle - - Metrics - - Metadata capture - - Model management - -![ArangoGraphML Pipeline](../../../images/ArangoGraphML_Pipeline.png) - -#### Setup - -The ArangoGraphML managed-service runs on the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -It offers a pre-configured environment where everything, -including necessary components and configurations, comes preloaded. You don't -need to set up or configure the infrastructure, and can immediately start using the -GraphML functionalities. - -To summarize, all you need to do is: -1. Sign up for an [ArangoGraph account](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -2. Create a new [deployment in ArangoGraph](../../arangograph/deployments/_index.md#how-to-create-a-new-deployment). -3. Start using the ArangoGraphML functionalities. - -### Self-managed ArangoGraphML - -The self-managed solution enables you to deploy and manage ArangoML within your -Kubernetes cluster using the [ArangoDB Kubernetes Operator](https://github.com/arangodb/kube-arangodb). - -The self-managed package includes the same features as in ArangoGraphML. -The primary distinction lies in the environment setup: with the self-managed -solution, you have direct control over configuring your environment. - -#### Setup - -You can run ArangoGraphML in your Kubernetes -cluster provided you already have a running `ArangoDeployment`. If you don't -have one yet, consider checking the installation guide of the -[ArangoDB Kubernetes Operator](https://arangodb.github.io/kube-arangodb/docs/using-the-operator.html) -and the [ArangoDeployment Custom Resource](https://arangodb.github.io/kube-arangodb/docs/deployment-resource-reference.html) -description. - -To start ArangoGraphML in your Kubernetes cluster, follow the instructions provided -in the [ArangoMLExtension Custom Resource](https://arangodb.github.io/kube-arangodb/docs/mlextension-resource.html) -description. Once the `CustomResource` has been created and the ArangoGraphML extension -is ready, you can start using it. \ No newline at end of file diff --git a/site/content/3.13/data-science/graphml/getting-started.md b/site/content/3.13/data-science/graphml/getting-started.md deleted file mode 100644 index 51b756d81d..0000000000 --- a/site/content/3.13/data-science/graphml/getting-started.md +++ /dev/null @@ -1,968 +0,0 @@ ---- -title: Getting Started with ArangoGraphML -menuTitle: Getting Started -weight: 10 -description: >- - How to control all resources inside ArangoGraphML in a scriptable manner -aliases: - - ../arangographml/getting-started-with-arangographml - - ../arangographml/getting-started ---- -ArangoGraphML provides an easy-to-use & scalable interface to run Graph Machine Learning on ArangoDB Data. Since all of the orchestration and ML logic is managed by ArangoGraph, all that is typically required are JSON specifications outlining individual processes to solve an ML Task. If you are using the self-managed solution, additional configurations may be required. - -The `arangoml` is a Python Package allowing you to manage all of the necessary ArangoGraphML components, including: -- **Project Management**: Projects are a metadata-tracking entity that sit at the top level of ArangoGraphML. All activities must link to a project. -- **Featurization**: The step of converting human-understandable data to machine-understandable data (i.e features), such that it can be used to train Graph Neural Networks (GNNs). -- **Training**: Train a set of models based on the name of the generated/existing features, and a definition of the ML Task we want to solve (e.g Node Classification, Embedding Generation). -- **Model Selection**: Select the best model based on the metrics generated during training. -- **Predictions**: Generate predictions based on the selected model, and persit the results to the source graph (either in the source document, or in a new collection). - -{{< tip >}} -To enable the ArangoGraphML services in the ArangoGraph platform, -[get in touch](https://www.arangodb.com/contact/) -with the ArangoDB team. Regular notebooks in ArangoGraph don't include the -`arangoml` package. -{{< /tip >}} - -ArangoGraphML's suite of services and packages is driven by **"specifications"**. These specifications are standard Python dictionaries that describe the task being performed, & the data being used. The ArangoGraphML services work closely together, with the previous task being used as the input for the next. - -Let's take a look at using the `arangoml` package to: - -1. Manage projects -2. Featurize data -3. Submit Training Jobs -4. Evaluate Model Metrics -5. Generate Predictions - -## Initialize ArangoML - -{{< tabs "arangoml" >}} - -{{< tab "ArangoGraphML" >}} - -**API Documentation: [arangoml.ArangoMLMagics.enable_arangoml](https://arangoml.github.io/arangoml/magics.html#arangoml.magic.ArangoMLMagics.enable_arangoml)** - -The `arangoml` package comes pre-loaded with every ArangoGraphML notebook environment. -To start using it, simply import it, and enable it via a Jupyter Magic Command. - -```py -arangoml = %enable_arangoml -``` - -{{< tip >}} -ArangoGraphML comes with other ArangoDB Magic Commands! See the full list [here](https://arangoml.github.io/arangoml/magics.html). -{{< /tip >}} - -{{< /tab >}} - -{{< tab "Self-managed" >}} - -**API Documentation: [arangoml.ArangoML](https://arangoml.github.io/arangoml/client.html#arangoml.main.ArangoML)** - -The `ArangoML` class is the main entry point for the `arangoml` package. -It has the following parameters: -- `client`: An instance of arango.client.ArangoClient. Defaults to `None`. If not provided, the **hosts** argument must be provided. -- `hosts`: The ArangoDB host(s) to connect to. This can be a single host, or a - list of hosts. -- `username`: The ArangoDB username to use for authentication. -- `password`: The ArangoDB password to use for authentication. -- `user_token`: The ArangoDB user token to use for authentication. - This is an alternative to username/password authentication. -- `ca_cert_file`: The path to the CA certificate file to use for TLS - verification. Defaults to `None`. -- `api_endpoint`: The URL to the ArangoGraphML API Service. -- `settings_files`: A list of secrets files to be loaded as settings. Parameters provided as arguments will override those in the settings files (e.g `settings.toml`). -- `version`: The ArangoML API date version. Defaults to the latest version. - -It is possible to instantiate an ArangoML object in multiple ways: - -1. Via parameters -```py -from arangoml import ArangoML - -arangoml = ArangoML( - hosts="http://localhost:8529" - username="root", - password="password", - # ca_cert_file="/path/to/ca.pem", - # user_token="..." - api_endpoint="http://localhost:8501", -) -``` - -2. Via parameters and a custom `ArangoClient` instance -```py -from arangoml import ArangoML -from arango import ArangoClient - -client = ArangoClient( - hosts="http://localhost:8529", - verify_override="/path/to/ca.pem", - hosts_resolver=..., - ... -) - -arangoml = ArangoML( - client=client, - username="root", - password="password", - # user_token="..." - api_endpoint="http://localhost:8501", -) -``` - -3. Via environment variables -```py -import os -from arangoml import ArangoML - -os.environ["ARANGODB_HOSTS"] = "http://localhost:8529" -os.environ["ARANGODB_CA_CERT_FILE"]="/path/to/ca.pem" -os.environ["ARANGODB_USER"] = "root" -os.environ["ARANGODB_PW"] = "password" -# os.environ["ARANGODB_USER_TOKEN"] = "..." -os.environ["ML_API_SERVICES_ENDPOINT"] = "http://localhost:8501" - -arangoml = ArangoML() -``` - -4. Via configuration files -```py -import os -from arangoml import ArangoML - -arangoml = ArangoML(settings_files=["settings_1.toml", "settings_2.toml"]) -``` - -5. Via a Jupyter Magic Command - -**API Documentation: [arangoml.ArangoMLMagics.enable_arangoml](https://arangoml.github.io/arangoml/magics.html#arangoml.magic.ArangoMLMagics.enable_arangoml)** - -``` -%load_ext arangoml -%enable_arangoml -``` -{{< info >}} -This assumes you are working out of a Jupyter Notebook environment, and -have set the environment variables in the notebook environment with user -authentication that has **_system** access. -{{< /info >}} - -{{< tip >}} -Running `%load_ext arangoml` also provides access to other [ArangoGraphML -Jupyter Magic Commands](https://arangoml.github.io/arangoml/magics.html). -{{< /tip >}} - -{{< /tab >}} - -{{< /tabs >}} - -## Load the database - -This example is using ArangoML to predict the **class** of `Events` in a -Knowledge Graph constructed from the [GDELT Project](https://www.gdeltproject.org/). - -> GDELT monitors the world's news media from nearly every corner of every - country in print, broadcast, and web formats, in over 100 languages, every - moment of every day. [...] Put simply, the GDELT Project is a realtime open - data global graph over human society as seen through the eyes of the world's - news media, reaching deeply into local events, reaction, discourse, and - emotions of the most remote corners of the world in near-realtime and making - all of this available as an open data firehose to enable research over human - society. - -The events used range from peaceful protests to significant battles in Angola. -The image below depicts the connections around an example event: - -![Example Event](../../../images/ArangoML_open_intelligence_sample.png) - -You can also see a larger portion of this graph, showing how the events, actors, -news sources, and locations are interconnected into a large graph. - -![Example Event](../../../images/ArangoML_open_intelligence_visualization.png) - -Let's get started! - -{{< tabs "arangoml" >}} - -{{< tab "ArangoGraphML" >}} - -The [`arango-datasets`](../../components/tools/arango-datasets.md) Python package -allows you to load pre-defined datasets into ArangoDB. It comes pre-installed in the -ArangoGraphML notebook environment. - -```py -DATASET_NAME = "OPEN_INTELLIGENCE_ANGOLA" - -%delete_database {DATASET_NAME} -%create_database {DATASET_NAME} -%use_database {DATASET_NAME} -%load_dataset {DATASET_NAME} -``` - -{{< /tab >}} - -{{< tab "Self-managed" >}} - -The [`arango-datasets`](../../components/tools/arango-datasets.md) Python package -allows you to load pre-defined datasets into ArangoDB. It can be installed with the -following command: - -``` -pip install arango-datasets -``` - -```py -from arango_datasets.datasets import Datasets - -DATASET_NAME = "OPEN_INTELLIGENCE_ANGOLA" - -db = arangoml.client.db( - name=DATASET_NAME, - username=arangoml.settings.get("ARANGODB_USER"), - password=arangoml.settings.get("ARANGODB_PW"), - user_token=arangoml.settings.get("ARANGODB_USER_TOKEN"), - verify=True -) - -Datasets(dataset_db).load(DATASET_NAME) -``` -{{< /tab >}} - -{{< /tabs >}} - -## Projects - -**API Documentation: [ArangoML.projects](https://arangoml.github.io/arangoml/api.html#projects)** - -Projects are an important reference used throughout the entire ArangoGraphML -lifecycle. All activities link back to a project. The creation of the project -is very simple. - -### Get/Create a project -```py -project = arangoml.get_or_create_project(DATASET_NAME) -``` - -### List projects - -```py -arangoml.projects.list_projects() -``` - -## Featurization - -**API Documentation: [ArangoML.jobs.featurize](https://arangoml.github.io/arangoml/api.html#agml_api.jobs.v1.api.jobs_api.JobsApi.featurize)** - -**The Featurization Service depends on a `Featurization Specification` that contains**: -- `featurizationName`: A name for the featurization task. - -- `projectName`: The associated project name. You can use `project.name` here - if it was created or retrieved as described above. - -- `graphName`: The associated graph name that exists within the database. - -- `featureSetID` Optional: The ID of an existing Feature Set to re-use. If provided, the `metagraph` dictionary can be ommitted. Defaults to `None`. - -- `featurizationConfiguration` Optional: The optional default configuration to be applied - across all features. Individual collection feature settings override this option. - - - `featurePrefix`: The prefix to be applied to all individual features generated. Default is `feat_`. - - - `outputName`: Adjust the default feature name. This can be any valid ArangoDB attribute name. Defaults to `x`. - - - `dimensionalityReduction`: Object configuring dimensionality reduction. - - `disabled`: Whether to disable dimensionality reduction. Default is `false`, - therefore dimensionality reduction is applied after Featurization by default. - - `size`: The number of dimensions to reduce the feature length to. Default is `512`. - - - `defaultsPerFeatureType`: A dictionary mapping each feature to how missing or mismatched values should be handled. The keys of this dictionary are the features, and the values are sub-dictionaries with the following keys: - - `missing`: A sub-dictionary detailing how missing values should be handled. - - `strategy`: The strategy to use for missing values. Options include `REPLACE` or `RAISE`. - - `replacement`: The value to replace missing values with. Only needed if `strategy` is `REPLACE`. - - `mismatch`: A sub-dictionary detailing how mismatched values should be handled. - - `strategy`: The strategy to use for mismatched values. Options include `REPLACE`, `RAISE`, `COERCE_REPLACE`, or `COERCE_RAISE`. - - `replacement`: The value to replace mismatched values with. Only needed if `strategy` is `REPLACE`, or `COERCE_REPLACE`. - -- `jobConfiguration` Optional: A set of configurations that are applied to the job. - - `batchSize`: The number of documents to process in a single batch. Default is `32`. - - `runAnalysisChecks`: Whether to run analysis checks, used to perform a high-level analysis of the data quality before proceeding. Default is `true`. - - `skipLabels`: Skips the featurization process for attributes marked as `label`. Default is `false`. - - `useFeatureStore`: Enables the use of the Feature Store database, which allows you to store features separately from your Source Database. Default is `false`, therefore features are written to the source graph. - - `overwriteFSGraph`: Whether to overwrite the Feature Store Graph if features were previously generated. Default is `false`, therefore features are written to an existing Feature Store Graph.s - - `writeToSourceGraph`: Whether to store the generated features on the Source Graph. Default is `true`. - -- `metagraph`: Metadata to represent the vertex & edge collections of the graph. - - `vertexCollections`: A dictionary mapping the vertex collection names to the following values: - - `features`: A dictionary mapping document properties to the following values: - - `featureType`: The type of feature. Options include `text`, `category`, `numeric`, or `label`. - - `config`: Collection-level configuration settings. - - `featurePrefix`: Identical to global `featurePrefix` but for this collection. - - `dimensionalityReduction`: Identical to global `dimensionalityReduction` but for this collection. - - `outputName`: Identical to global `outputName`, but specifically for this collection. - - `defaultsPerFeatureType`: Identical to global `defaultsPerFeatureType`, but specifically for this collection. - - `edgeCollections`: A dictionary mapping the edge collection names to an empty dictionary, as edge attributes are not currently supported. - -The Featurization Specification example is used for the GDELT dataset: -- It featurizes the `name` attribute of the `Actor`, `Class`, `Country`, - `Source`, `Location`, and `Region` collections as a `text` features. -- It featurizes the `description` attribute of the `Event` collection as a - `text` feature. -- It featurizes the `label` attribute of the `Event` collection as a `label` - feature (this is the attribute you want to predict). -- It featurizes the `sourceScale` attribute of the `Source` collection as a - `category` feature. -- It featurizes the `name` attribute of the `Region` collection as a - `category` feature. - -```py -# 1. Define the Featurization Specification - -featurization_spec = { - "databaseName": dataset_db.name, - "projectName": project.name, - "graphName": graph.name, - "featurizationName": f"{DATASET_NAME}_Featurization", - "featurizationConfiguration": { - "featurePrefix": "feat_", - "dimensionalityReduction": { "size": 256 }, - "outputName": "x" - }, - "jobConfiguration": { - "batchSize": 512, - "useFeatureStore": False, - "runAnalysisChecks": False, - }, - "metagraph": { - "vertexCollections": { - "Actor": { - "features": { - "name": { - "featureType": "text", - }, - } - }, - "Country": { - "features": { - "name": { - "featureType": "text", - } - } - }, - "Event": { - "features": { - "description": { - "featureType": "text", - }, - "label": { - "featureType": "label", - }, - } - }, - "Source": { - "features": { - "name": { - "featureType": "text", - }, - "sourceScale": { - "featureType": "category", - }, - } - }, - "Location": { - "features": { - "name": { - "featureType": "text", - } - } - }, - "Region": { - "features": { - "name": { - "featureType": "category", - }, - } - } - }, - "edgeCollections": { - "eventActor": {}, - "hasSource": {}, - "hasLocation": {}, - "inCountry": {}, - "inRegion": {}, - } - } -} -``` - -Once the specification has been defined, a Featurization Job can be triggered using the `arangoml.jobs.featurize` method: - -```py -# 2. Submit a Featurization Job - -featurization_job = arangoml.jobs.featurize(featurization_spec) -``` - -Once a Featurization Job has been submitted, you can wait for it to complete using the `arangoml.wait_for_featurization` method: - -```py -# 3. Wait for the Featurization Job to complete - -featurization_job_result = arangoml.wait_for_featurization(featurization_job.job_id) -``` - - -**Example Output:** -```py -{ - "job_id": "16349541", - "output_db_name": "OPEN_INTELLIGENCE_ANGOLA", - "graph": "OPEN_INTELLIGENCE_ANGOLA", - "feature_set_id": "16349537", - "feature_set_ids": [ - "16349537" - ], - "vertexCollections": { - "Actor": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Class": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Country": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Event": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x", - "y": "OPEN_INTELLIGENCE_ANGOLA_y" - }, - "Source": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Location": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Region": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - } - }, - "edgeCollections": { - "eventActor": {}, - "hasSource": {}, - "hasLocation": {}, - "inCountry": {}, - "inRegion": {}, - "subClass": {}, - "type": {} - }, - "label_field": "OPEN_INTELLIGENCE_ANGOLA_y", - "input_field": "OPEN_INTELLIGENCE_ANGOLA_x", - "feature_set_id_to_results": { - "16349537": { - "feature_set_id": "16349537", - "output_db_name": "OPEN_INTELLIGENCE_ANGOLA", - "graph": "OPEN_INTELLIGENCE_ANGOLA", - "vertexCollections": { - "Actor": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Class": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Country": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Event": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x", - "y": "OPEN_INTELLIGENCE_ANGOLA_y" - }, - "Source": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Location": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Region": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - } - }, - "edgeCollections": { - "eventActor": {}, - "hasSource": {}, - "hasLocation": {}, - "inCountry": {}, - "inRegion": {}, - "subClass": {}, - "type": {} - }, - "label_field": "OPEN_INTELLIGENCE_ANGOLA_y", - "input_field": "OPEN_INTELLIGENCE_ANGOLA_x", - "is_feature_store": false, - "target_collection": "Event" - } - }, - "is_feature_store": false, - "target_collection": "Event" -} -``` - -You can also cancel a Featurization Job using the `arangoml.jobs.cancel_job` method: - -```py -arangoml.jobs.cancel_job(prediction_job.job_id) -``` - - -## Training - -**API Documentation: [ArangoML.jobs.train](https://arangoml.github.io/arangoml/api.html#agml_api.jobs.v1.api.jobs_api.JobsApi.train)** - -Training Graph Machine Learning Models with ArangoGraphML requires two steps: -1. Describe which data points should be included in the Training Job. -2. Pass the Training Specification to the Training Service. - -**The Training Service depends on a `Training Specification` that contains**: -- `featureSetID`: The feature set ID that was generated during the Featurization Job (if any). It replaces the need to provide the `metagraph`, `databaseName`, and `projectName` fields. - -- `databaseName`: The database name the source data is in. Can be omitted if `featureSetID` is provided. - -- `projectName`: The top-level project to which all the experiments will link back. Can be omitted if `featureSetID` is provided. - -- `useFeatureStore`: Boolean for enabling or disabling the use of the feature store. Default is `false`. - -- `mlSpec`: Describes the desired machine learning task, input features, and - the attribute label to be predicted. - - `classification`: Dictionary to describe the Node Classification Task Specification. - - `targetCollection`: The ArangoDB collection name that contains the prediction label. - - `inputFeatures`: The name of the feature to be used as input. - - `labelField`: The name of the attribute to be predicted. - - `batchSize`: The number of documents to process in a single training batch. Default is `64`. - - `graphEmbeddings`: Dictionary to describe the Graph Embedding Task Specification. - - `targetCollection`: The ArangoDB collection used to generate the embeddings. - - `embeddingSize`: The size of the embedding vector. Default is `128`. - - `batchSize`: The number of documents to process in a single training batch. Default is `64`. - - `generateEmbeddings`: Whether to generate embeddings on the training dataset. Default is `false`. - -- `metagraph`: Metadata to represent the vertex & edge collections of the graph. If `featureSetID` is provided, this can be omitted. - - `graph`: The ArangoDB graph name. - - `vertexCollections`: A dictionary mapping the collection names to the following values: - - `x`: The name of the feature to be used as input. - - `y`: The name of the attribute to be predicted. Can only be specified for one collection. - - `edgeCollections`: A dictionary mapping the edge collection names to an empty dictionary, as edge features are not currently supported. - -A Training Specification allows for concisely defining your training task in a -single object and then passing that object to the training service using the -Python API client, as shown below. - -The ArangoGraphML Training Service is responsible for training a series of -Graph Machine Learning Models using the data provided in the Training -Specification. It assumes that the data has been featurized and is ready to be -used for training. - -Given that we have run a Featurization Job, we can create the Training Specification using the `featurization_job_result` object returned from the Featurization Job: - -```py -# 1. Define the Training Specification - -# Node Classification example - -training_spec = { - "featureSetID": featurization_job_result.result.feature_set_id, - "mlSpec": { - "classification": { - "targetCollection": "Event", - "inputFeatures": "OPEN_INTELLIGENCE_ANGOLA_x", - "labelField": "OPEN_INTELLIGENCE_ANGOLA_y", - } - }, -} - -# Node Embedding example -# NOTE: Full Graph Embeddings support is coming soon - -training_spec = { - "featureSetID": featurization_job_result.result.feature_set_id, - "mlSpec": { - "graphEmbeddings": { - "targetCollection": "Event", - "embeddingSize": 128, - "generateEmbeddings": True, - } - }, -} -``` - -Once the specification has been defined, a Training Job can be triggered using the `arangoml.jobs.train` method: - -```py -# 2. Submit a Training Job - -training_job = arangoml.jobs.train(training_spec) -``` - -Once a Training Job has been submitted, you can wait for it to complete using the `arangoml.wait_for_training` method: - -```py -# 3. Wait for the Training Job to complete - -training_job_result = arangoml.wait_for_training(training_job.job_id) -``` - -**Example Output (Node Classification):** -```py -{ - "job_id": "691ceb2f-1931-492a-b4eb-0536925a4697", - "job_status": "COMPLETED", - "project_name": "OPEN_INTELLIGENCE_ANGOLA_GraphML_Node_Classification", - "project_id": "16832427", - "database_name": "OPEN_INTELLIGENCE_ANGOLA", - "metagraph": { - "mlSpec": { - "classification": { - "targetCollection": "Event", - "inputFeatures": "OPEN_INTELLIGENCE_ANGOLA_x", - "labelField": "OPEN_INTELLIGENCE_ANGOLA_y", - "metrics": None - } - }, - "graph": "OPEN_INTELLIGENCE_ANGOLA", - "vertexCollections": { - "Actor": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Class": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Country": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Event": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x", - "y": "OPEN_INTELLIGENCE_ANGOLA_y" - }, - "Source": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Location": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Region": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - } - }, - "edgeCollections": { - "eventActor": {}, - "hasSource": {}, - "hasLocation": {}, - "inCountry": {}, - "inRegion": {}, - "subClass": {}, - "type": {} - }, - "batch_size": 64 - }, - "time_submitted": "2024-01-12T02:19:19.686286", - "time_started": "2024-01-12T02:19:29.403742", - "time_ended": "2024-01-12T02:30:59.313038", - "job_state": None, - "job_conditions": None -} -``` - -**Example Output (Node Embeddings):** -```py -{ - "job_id": "6047e53a-f1dd-4725-83e8-74ac44629c11", - "job_status": "COMPLETED", - "project_name": "OPEN_INTELLIGENCE_ANGOLA_GraphML_Node_Embeddings", - "project_id": "647025872", - "database_name": "OPEN_INTELLIGENCE_ANGOLA", - "ml_spec": { - "graphEmbeddings": { - "targetCollection": "Event", - "embeddingLevel": "NODE_EMBEDDINGS", - "embeddingSize": 128, - "embeddingTrainingType": "UNSUPERVISED", - "batchSize": 64, - "generateEmbeddings": true, - "bestModelSelection": "BEST_LOSS", - "persistModels": "ALL_MODELS", - "modelConfigurations": {} - } - }, - "metagraph": { - "graph": "OPEN_INTELLIGENCE_ANGOLA", - "vertexCollections": { - "Actor": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Country": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Event": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x", - "y": "OPEN_INTELLIGENCE_ANGOLA_y" - }, - "Source": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Location": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - }, - "Region": { - "x": "OPEN_INTELLIGENCE_ANGOLA_x" - } - }, - "edgeCollections": { - "eventActor": {}, - "hasSource": {}, - "hasLocation": {}, - "inCountry": {}, - "inRegion": {} - } - }, - "time_submitted": "2025-03-27T02:55:15.099680", - "time_started": "2025-03-27T02:57:25.143948", - "time_ended": "2025-03-27T03:01:24.619737", - "training_type": "Training" -} -``` - -You can also cancel a Training Job using the `arangoml.jobs.cancel_job` method: - -```py -arangoml.jobs.cancel_job(training_job.job_id) -``` - -## Model Selection - -Model Statistics can be observed upon completion of a Training Job. -To select a Model, the ArangoGraphML Projects Service can be used to gather -all relevant models and choose the preferred model for a Prediction Job. - -First, let's list all the trained models using [ArangoML.list_models](https://arangoml.github.io/arangoml/client.html#arangoml.main.ArangoML.list_models): - -```py -# 1. List all trained Models - -models = arangoml.list_models( - project_name=project.name, - training_job_id=training_job.job_id -) - -print(len(models)) -``` - -The cell below selects the model with the highest **test accuracy** using [ArangoML.get_best_model](https://arangoml.github.io/arangoml/client.html#arangoml.main.ArangoML.get_best_model), but there may be other factors that motivate you to choose another model. See the `model_statistics` in the output field below for more information on the full list of available metrics. - -```py - -# 2. Select the best Model - -# Get best Node Classification Model -# Sort by highest test accuracy - -best_model = arangoml.get_best_model( - project.name, - training_job.job_id, - sort_parent_key="test", - sort_child_key="accuracy", -) - -# Get best Graph Embedding Model -# Sort by lowest loss - -best_model = arangoml.get_best_model( - project.name, - training_job.job_id, - sort_parent_key="loss", - sort_child_key=None, - reverse=False -) - -print(best_model) -``` - -**Example Output (Node Classification):** -```py -{ - "job_id": "691ceb2f-1931-492a-b4eb-0536925a4697", - "model_id": "02297435-3394-4e7e-aaac-82e1d224f85c", - "model_statistics": { - "_id": "devperf/123", - "_key": "123", - "_rev": "_gkUc8By--_", - "run_id": "123", - "test": { - "accuracy": 0.8891242216547955, - "confusion_matrix": [[13271, 2092], [1276, 5684]], - "f1": 0.9, - "loss": 0.1, - "precision": 0.9, - "recall": 0.8, - "roc_auc": 0.8, - }, - "validation": { - "accuracy": 0.9, - "confusion_matrix": [[13271, 2092], [1276, 5684]], - "f1": 0.85, - "loss": 0.1, - "precision": 0.86, - "recall": 0.85, - "roc_auc": 0.85, - }, - }, - "target_collection": "Event", - "target_field": "label", -} -``` - -**Example Output (Node Embeddings):** -```py -{ - "job_id": "6047e53a-f1dd-4725-83e8-74ac44629c11", - "model_id": "55ae93c2-3497-4405-9c63-0fa0e4a5b5bd", - "model_display_name": "graphsageencdec Model", - "model_name": "graphsageencdec Model 55ae93c2-3497-4405-9c63-0fa0e4a5b5bd", - "model_statistics": { - "loss": 0.13700408464796796, - "val_acc": 0.5795393939393939, - "test_acc": 0.5809545454545455 - }, - "model_tasks": [ "GRAPH_EMBEDDINGS" ] -} -``` - -## Prediction - -**API Documentation: [ArangoML.jobs.predict](https://arangoml.github.io/arangoml/api.html#agml_api.jobs.v1.api.jobs_api.JobsApi.predict)** - -Final step! - -After selecting a model, a Prediction Job can be created. The Prediction Job -will generate predictions and persist them to the source graph in a new -collection, or within the source documents. - -**The Prediction Service depends on a `Prediction Specification` that contains**: -- `projectName`: The top-level project to which all the experiments will link back. -- `databaseName`: The database name the source data is in. -- `modelID`: The model ID to use for generating predictions. -- `featurizeNewDocuments`: Boolean for enabling or disabling the featurization of new documents. Useful if you don't want to re-train the model upon new data. Default is `false`. -- `featurizeOutdatedDocuments`: Boolean for enabling or disabling the featurization of outdated documents. Outdated documents are those whose features have changed since the last featurization. Default is `false`. -- `schedule`: A cron expression to schedule the prediction job (e.g `0 0 * * *` for daily predictions). Default is `None`. -- `embeddingsField`: The name of the field to store the generated embeddings. This is only used for Graph Embedding tasks. Default is `None`. - -```py -# 1. Define the Prediction Specification - -# Node Classification Example -prediction_spec = { - "projectName": project.name, - "databaseName": dataset_db.name, - "modelID": best_model.model_id, -} - -# Node Embedding Example -prediction_spec = { - "projectName": project.name, - "databaseName": dataset_db.name, - "modelID": best_model.model_id, - "embeddingsField": "embeddings" -} -``` - -This job updates all documents with the predictions derived from the trained model. -Once the specification has been defined, a Prediction Job can be triggered using the `arangoml.jobs.predict` method: - -```py -# 2. Submit a Prediction Job - -# For Node Classification -prediction_job = arangoml.jobs.predict(prediction_spec) - -# For Graph Embeddings -prediction_job = arangoml.jobs.generate(prediction_spec) -``` - -Similar to the Training Service, we can wait for a Prediction Job to complete with the `arangoml.wait_for_prediction` method: - -```py -# 3. Wait for the Prediction Job to complete - -prediction_job_result = arangoml.wait_for_prediction(prediction_job.job_id) -``` - -**Example Output (Node Classification):** -```py -{ - "job_id": "b2a422bb-5650-4fbc-ba6b-0578af0049d9", - "job_status": "COMPLETED", - "project_name": "OPEN_INTELLIGENCE_ANGOLA_GraphML_Node_Classification", - "project_id": "16832427", - "database_name": "OPEN_INTELLIGENCE_ANGOLA", - "model_id": "1a365657-f5ed-4da9-948b-1ff60bc6e7de", - "job_state_information": { - "outputGraphName": "OPEN_INTELLIGENCE_ANGOLA", - "outputCollectionName": "Event", - "outputAttribute": "OPEN_INTELLIGENCE_ANGOLA_y_predicted", - "numberOfPredictedDocuments": 3302, - "outputEdgeCollectionName": None - }, - "time_submitted": "2024-01-12T02:31:18.382625", - "time_started": "2024-01-12T02:31:23.550469", - "time_ended": "2024-01-12T02:31:40.021035" -} -``` - -**Example Output (Node Embeddings):** -```py -{ - "job_id": "25260362-9764-47d0-abb4-247cbdce6c7b", - "job_status": "COMPLETED", - "project_name": "OPEN_INTELLIGENCE_ANGOLA_GraphML_Node_Embeddings", - "project_id": "647025872", - "database_name": "OPEN_INTELLIGENCE_ANGOLA", - "model_id": "55ae93c2-3497-4405-9c63-0fa0e4a5b5bd", - "job_state_information": { - "outputGraphName": "OPEN_INTELLIGENCE_ANGOLA", - "outputCollectionName": "Event", - "outputAttribute": "embeddings", - "numberOfPredictedDocuments": 0, # 0 All documents already have up-to-date embeddings - }, - "time_submitted": "2025-03-27T14:02:33.094191", - "time_started": "2025-03-27T14:09:34.206659", - "time_ended": "2025-03-27T14:09:35.791630", - "prediction_type": "Prediction" -} -``` - -You can also cancel a Prediction Job using the `arangoml.jobs.cancel_job` method: - -```py -arangoml.jobs.cancel_job(prediction_job.job_id) -``` - -### Viewing Inference Results - -We can now access our results via AQL: - -```py -import json - -collection_name = prediction_job_result.job_state_information['outputCollectionName'] - -query = f""" - FOR doc IN `{collection_name}` - SORT RAND() - LIMIT 3 - RETURN doc -""" - -docs = list(dataset_db.aql.execute(query)) - -print(json.dumps(docs, indent=2)) -``` - -## What's next - -With the generated Feature (and optionally Node) Embeddings, you can now use them for downstream tasks like clustering, anomaly detection, and link prediction. Consider using [ArangoDB's Vector Search](https://arangodb.com/2024/11/vector-search-in-arangodb-practical-insights-and-hands-on-examples/) capabilities to find similar nodes based on their embeddings. From 66d5571936b8b0a0ac82ce809d1f721148be08f2 Mon Sep 17 00:00:00 2001 From: Paula Date: Mon, 7 Jul 2025 16:29:58 +0200 Subject: [PATCH 13/48] rework graph rag main page --- .../3.13/data-science/graphrag/_index.md | 103 ++++++++++++++---- 1 file changed, 81 insertions(+), 22 deletions(-) diff --git a/site/content/3.13/data-science/graphrag/_index.md b/site/content/3.13/data-science/graphrag/_index.md index 712cb9c0b2..9f032428a4 100644 --- a/site/content/3.13/data-science/graphrag/_index.md +++ b/site/content/3.13/data-science/graphrag/_index.md @@ -4,11 +4,13 @@ menuTitle: GraphRAG weight: 10 description: >- ArangoDB's GraphRAG solution combines graph-based retrieval augmented generation - with Large Language Models (LLMs) for turbocharged Gen AI solutions + with Large Language Models (LLMs) for turbocharged GenAI solutions aliases: llm-knowledge-graphs -# TODO: Repurpose for GenAI --- + +## Introduction + Large language models (LLMs) and knowledge graphs are two prominent and contrasting concepts, each possessing unique characteristics and functionalities that significantly impact the methods we employ to extract valuable insights from @@ -30,16 +32,10 @@ LLMs provide a powerful and efficient solution for anyone seeking to extract valuable insights from diverse datasets. The GraphRAG component of the GenAI Suite brings all the capabilities -together with an easy-to-use interface so you can make the knowledge accessible +together with an easy-to-use interface, so you can make the knowledge accessible to your organization. -## ArangoDB GraphRAG - -ArangoDB's GraphRAG solution democratizes the creation and usage of knowledge -graphs with a unique combination of vector search, graphs, and LLMs in a -single product. - -### Knowledge Graphs +## Knowledge Graphs A knowledge graph can be thought of as a dynamic and interconnected network of real-world entities and the intricate relationships that exist between them. @@ -60,22 +56,85 @@ the following tasks: - End-to-end knowledge graph construction - (Text) Embeddings +## How GraphRAG works + +ArangoDB's GraphRAG solution democratizes the creation and usage of knowledge +graphs with a unique combination of vector search, graphs, and LLMs in a +single product. + +The overall process of GraphRAG involves: +- **Creating a Knowledge Graph** from raw text data. +- **Identifying and extract entities, relationships, and their connections** within the data. +- **Storing the structured information** in ArangoDB. +- **Using this structured representation** as the foundation for efficient and accurate information retrieval. +- **Integrating retrieval methods with LLMs** to augment responses using both structured and unstructured data. +- **Enhancing the reliability and depth** of responses by combining these approaches. + +GraphRAG is particularly valuable for: +- Applications requiring in-depth knowledge retrieval +- Contextual question answering, +- Reasoning over interconnected information + ![ArangoDB Knowledge Graphs and LLMs](../../../images/ArangoDB-knowledge-graphs-meets-llms.png) -### Examples +### Turn text files into a Knowledge Graph + +The RagLoader service is the entry point of the GraphRAG pipeline. It takes a +raw text file as input, processes it using an LLM to extract entities and +relationships, and generates a Knowledge Graph. The Knowledge Graph is then +stored in an ArangoDB database for further use. The Knowledge Graph represents +information in a structured graph format, allowing efficient querying and retrieval. + +1. Pre-process the raw text file to identify entities and their relationships. +2. Use LLMs to infer connections and context, enriching the Knowledge Graph. +3. Store the generated Knowledge Graph in the database for retrieval and reasoning. + +For detailed information about the service, see the +[RagLoader](./services/rag-loader.md) documentation. + +### Extract information from the Knowledge Graph + +The RagRetriever service enables intelligent search and retrieval of information +from your previously created Knowledge Graph. +You can extract information from Knowledge Graphs using two distinct methods: +- Global retrieval +- Local retrieval + +For detailed information about the service, see the +[RagRetriever](./services/rag-retriever.md) documentation. + +#### Global retrieval + +Global retrieval focuses on: +- Extracting information from the entire Knowledge Graph, regardless of specific + contexts or constraints. +- Provides a comprehensive overview and answers queries that span across multiple + entities and relationships in the graph. + +**Use cases:** +- Answering broad questions that require a holistic understanding of the Knowledge Graph. +- Aggregating information from diverse parts of the Knowledge Graph for high-level insights. + +**Example query:** + +Global retrieval can answer questions like _**What are the main themes or topics covered in the document**_? + +This would involve analyzing the entire KG to identify and summarize the dominant entities, their relationships, and associated themes. + +#### Local retrieval -### Interfaces +Local retrieval is a more focused approach for: +- Queries that are constrained to specific subgraphs or contextual clusters + within the Knowledge Graph. +- Targeted and precise information extraction, often using localized sections + of the Knowledge Graph. -{{< tabs "interfaces" >}} +**Use cases:** +- Answering detailed questions about a specific entity or a related group of entities. +- Retrieving information relevant to a particular topic or section in the Knowledge Graph. -{{< tab "Web interface" >}} -1. In the Platform UI, ... -{{< /tab >}} +**Example query:** -{{< tab "cURL" >}} -``` -curl http://localhost:8529/gen-ai/ -``` -{{< /tab >}} +Local retrieval can answer questions like _**What is the relationship between entity X and entity Y**_? -{{< /tabs >}} +This query focuses only on the subgraph involving entities X and Y, extracting detailed relationships and context. From 1fdc37e99cbaed2c0528fef5a74947036ac33790 Mon Sep 17 00:00:00 2001 From: Paula Date: Tue, 8 Jul 2025 15:40:24 +0200 Subject: [PATCH 14/48] formatting --- .../data-science/graphrag/services/gen-ai.md | 58 +++-- .../data-science/graphrag/services/mlflow.md | 67 ++++-- .../graphrag/services/rag-loader.md | 211 +++++++++++------- 3 files changed, 212 insertions(+), 124 deletions(-) diff --git a/site/content/3.13/data-science/graphrag/services/gen-ai.md b/site/content/3.13/data-science/graphrag/services/gen-ai.md index 8f13367645..148f574398 100644 --- a/site/content/3.13/data-science/graphrag/services/gen-ai.md +++ b/site/content/3.13/data-science/graphrag/services/gen-ai.md @@ -7,23 +7,26 @@ description: >- # TODO: Shouldn't this refer to the ArangoDB Platform instead? weight: 5 --- -## Description The basic operations that the GenAI orchestration service carries out are the following: - Install a service - Uninstall a service - Get the status of a service -Each unique service does have its own API endpoint for the deployment. +Each unique service has its own API endpoint for the deployment. **Endpoint LLM Host:** `https://:8529/gen-ai/v1/llmhost` -While they have their own unique endpoint, all services share the same creation request body and the same response body structure. While the env field is used to define the service specific parameters, like e.g. the model name to use for a llm host service, the labels can be used to filter and identify the services in the platform. All services do support the 'profiles' field, which can be used to define the profile to use for the service. One use case is defining a GPU profile that enables the service to run an LLM on GPU resources. +While services have their own unique endpoint, they share the same creation +request body and the same response body structure. The `env` field is used +to define the service specific parameters, like the model name to use for a +`llmhost` service, and the labels can be used to filter and identify the services +in the platform. All services support the `profiles` field, which you can use +to define the profile to use for the service. For example, you can define a +GPU profile that enables the service to run an LLM on GPU resources. -## Examples - -### LLM Host Service Creation Request Body +## LLM Host Service Creation Request Body ```json { @@ -33,7 +36,7 @@ While they have their own unique endpoint, all services share the same creation } ``` -### Using Labels in Creation Request Body +## Using Labels in Creation Request Body ```json { @@ -46,10 +49,13 @@ While they have their own unique endpoint, all services share the same creation } } ``` +{{< info >}} +Labels are optional. Labels can be used to filter and identify services in +the platform. If you want to use labels, define them as a key-value pair in `labels` +within the `env` field. +{{< /info >}} -**Note:** Labels are optional. Labels can be used to filter and identify services in the platform. If you want to use labels, define them as a key-value pair in the `labels` within the `env` field. - -### Using Profiles in Creation Request Body +## Using Profiles in Creation Request Body ```json { @@ -60,24 +66,34 @@ While they have their own unique endpoint, all services share the same creation } ``` -**Note:** The `profiles` field is optional. If it is not set, the service will be created with the default profile. Profiles must be present and created in the platform before they can be used. If you want to use profiles, define them as a comma-separated string in the `profiles` within the `env` field. +{{< info >}} +The `profiles` field is optional. If it is not set, the service is created with +the default profile. Profiles must be present and created in the platform before +they can be used. If you want to use profiles, define them as a comma-separated +string in `profiles` within the `env` field. +{{< /info >}} -The service specific required parameters for the deployment are defined in the corresponding service documentation. +The service specific required parameters for the deployment are defined in the +corresponding service documentation. ## Obtaining a Bearer Token -Before you can authenticate with the GenAI service, you need to obtain a Bearer token. You can generate this token using the ArangoDB authentication API: +Before you can authenticate with the GenAI service, you need to obtain a +Bearer token. You can generate this token using the ArangoDB authentication API: ```bash curl -X POST https://:8529/_open/auth \ -d '{"username": "your-username", "password": "your-password"}' ``` -This will return a JWT token that you can use as your Bearer token. For more details about ArangoDB authentication and JWT tokens, see the [ArangoDB Authentication Documentation](https://docs.arangodb.com/stable/develop/http-api/authentication/#jwt-user-tokens). +This returns a JWT token that you can use as your Bearer token. For more +details about ArangoDB authentication and JWT tokens, see +the [ArangoDB Authentication](https://docs.arangodb.com/stable/develop/http-api/authentication/#jwt-user-tokens) +documentation. ## Complete Service Lifecycle Example -Here's a complete example showing how to install, monitor, and uninstall a RAGLoader service: +The example below shows how to install, monitor, and uninstall a RAGLoader service. ### Step 1: Install the Service @@ -146,10 +162,10 @@ curl -X DELETE https://:8529/gen-ai/v1/service/arangodb-graphr } ``` -**Notes:** - +{{< info >}} - **Service ID**: The `serviceId` from Step 1's response (`arangodb-graphrag-importer-of1ml`) is used in Steps 2 and 3 - **Authentication**: All requests use the same Bearer token in the `Authorization` header +{{< /info >}} ### Customizing the Example @@ -178,8 +194,12 @@ curl -X GET https://:8529/gen-ai/v1/health Expected output on success: `{"status":"OK"}` -**Note:** Keep in mind that this request requires a valid Bearer token. Without a valid Bearer token, the request will fail. +{{< info >}} +Keep in mind that this request requires a valid Bearer token. Without a valid +Bearer token, the request fails. +{{< /info >}} ## API Reference -For detailed API documentation, visit: [GenAI-Service API Reference](https://arangoml.github.io/platform-dss-api/GenAI-Service/proto/index.html) +For detailed API documentation, see the +[GenAI-Service API Reference](https://arangoml.github.io/platform-dss-api/GenAI-Service/proto/index.html). diff --git a/site/content/3.13/data-science/graphrag/services/mlflow.md b/site/content/3.13/data-science/graphrag/services/mlflow.md index 3b0dabb30e..e8e3900e77 100644 --- a/site/content/3.13/data-science/graphrag/services/mlflow.md +++ b/site/content/3.13/data-science/graphrag/services/mlflow.md @@ -8,35 +8,49 @@ weight: 25 --- ## Overview -The ArangoDB MLflow service is a service that hosts the official MLflow application in your Kubernetes cluster and connects it automatically to the ArangoDB environment, e.g. for registering the LLM to be self-hosted and used by services requiring LLMs (natural-language-service, RAGLoader, RAGRetriever). - -MLflow is an open-source platform, purpose-built to assist machine learning practitioners and teams in handling the complexities of the machine learning process. It focuses on the full lifecycle for machine learning projects, ensuring that each phase is manageable, traceable, and reproducible. - -The main purpose of our MLflow integration is to provide a seamless experience for users to manage their machine learning models and experiments within the ArangoDB environment. For example, any spawned LLM host service will automatically be linked to the MLflow service and will be able to fetch any registered model from the MLflow model registry. - -**Note:** The detailed instructions about how to organize the format of a model for the dedicated LLM host service can be found in their respective documentation. - -## Core Components +The ArangoDB MLflow service is a service that hosts the official MLflow +application in your Kubernetes cluster and connects automatically to the +ArangoDB environment, e.g. for registering the LLM to be self-hosted and +used by services requiring LLMs (Natural language service, RAGLoader, RAGRetriever). + +MLflow is an open-source platform, purpose-built to assist machine learning +practitioners and teams in handling the complexities of the machine learning +process. It focuses on the full lifecycle for machine learning projects, ensuring +that each phase is manageable, traceable, and reproducible. + +The main purpose of the ArangoDB's MLflow integration is to provide a seamless +experience to manage your machine learning models and experiments within the +ArangoDB environment. For example, any spawned LLM host service is automatically +linked to the MLflow service and is able to fetch any registered model from the +MLflow model registry. + +{{< info >}} +You can find detailed instructions about how to organize the format of a model for a +dedicated LLM host service in the official [MLflow](https://mlflow.org/docs/latest/genai/) +documentation. +{{< /info >}} + +## Core components MLflow consists of the following core components: -- **Model Registry**: A centralized model store, set of APIs, and UI to collaboratively manage the full lifecycle of an MLflow Model, including model lineage, versioning, stage transitions, and annotations. - -- **Experiment Tracking**: Provides an API and UI for logging parameters, code versions, metrics, and artifacts during the ML process, allowing for comparison of multiple runs across different users. - +- **Model Registry**: A centralized model store, set of APIs, and UI to + collaboratively manage the full lifecycle of an MLflow Model, including + model lineage, versioning, stage transitions, and annotations. +- **Experiment Tracking**: Provides an API and UI for logging parameters, + code versions, metrics, and artifacts during the ML process, allowing + for comparison of multiple runs across different users. - **Model Packaging**: Offers a standard format for packaging models from any framework. - -- **Serving**: Facilitates the deployment of models to various platforms. Within the ArangoDB environment, this enables the integration with services that utilize self-hosted LLMs. - +- **Serving**: Facilitates the deployment of models to various platforms. + Within the ArangoDB environment, this enables the integration with services that utilize self-hosted LLMs. - **Evaluation**: Provides tools for in-depth model analysis, facilitating objective model comparison. - - **Observability**: Ensures that the ML lifecycle is traceable and reproducible through various metrics and logs. ## Getting Started The ArangoDB MLflow service is **started by default**. -It will be automatically spawned and available at the following URL: +It is automatically spawned and available at the following URL: ``` https://:8529/mlflow/ @@ -48,18 +62,25 @@ You can interact with the ArangoDB MLflow service in two ways: To use the programmatic API, please use the **official MLflow client**. -**Note:** The ArangoDB MLflow service requires authentication. You need a valid Bearer token to access the service. +{{< info >}} +The ArangoDB MLflow service requires authentication. You need a valid +Bearer token to access the service. +{{< /info >}} #### Obtaining a Bearer Token -Before you can authenticate with the MLflow service, you need to obtain a Bearer token. You can generate this token using the ArangoDB authentication API: +Before you can authenticate with the MLflow service, you need to obtain a +Bearer token. You can generate this token using the ArangoDB authentication API: ```bash curl -X POST https://:8529/_open/auth \ -d '{"username": "your-username", "password": "your-password"}' ``` -This will return a JWT token that you can use as your Bearer token. For more details about ArangoDB authentication and JWT tokens, see the [ArangoDB Authentication Documentation](https://docs.arangodb.com/stable/develop/http-api/authentication/#jwt-user-tokens). +This returns a JWT token that you can use as your Bearer token. +For more details about ArangoDB authentication and JWT tokens, see the +[ArangoDB Authentication](https://docs.arangodb.com/stable/develop/http-api/authentication/#jwt-user-tokens) +documentation. ### Installation @@ -119,8 +140,8 @@ Expected output on success: HTTP `200` status with response body `OK` ## API Reference -For detailed API documentation, refer to the official MLflow REST API documentation: -[MLflow REST API Reference](https://mlflow.org/docs/latest/api_reference/rest-api.html) +For detailed API documentation, refer to the official +[MLflow REST API Reference](https://mlflow.org/docs/latest/api_reference/rest-api.html). ## Additional Resources diff --git a/site/content/3.13/data-science/graphrag/services/rag-loader.md b/site/content/3.13/data-science/graphrag/services/rag-loader.md index eb94d7a457..afe557b2a1 100644 --- a/site/content/3.13/data-science/graphrag/services/rag-loader.md +++ b/site/content/3.13/data-science/graphrag/services/rag-loader.md @@ -2,7 +2,7 @@ title: RagLoader Service menuTitle: RagLoader description: >- - The RagLoader service helps you transform your text document into knowledge graph, + The RagLoader service helps you transform your text document into a knowledge graph, making it easier to analyze and understand complex information weight: 10 --- @@ -13,109 +13,145 @@ It supports the following text formats with UTF-8 encoding: - Plain text - Markdown -The Loader takes your text, analyzes it using the configured language model, and +The RagLoader takes your text, analyzes it using the configured language model, and creates a structured knowledge graph. This graph is then imported into your ArangoDB database, where you can query and analyze the relationships between -different concepts in your document with our RagRetriever service. +different concepts in your document with the RagRetriever service. -## How ArangoDB Collections looks after Import Process: +## How ArangoDB collections look like -The RagLoader creates several collections in ArangoDB to store different aspects of your knowledge graph. Here's a detailed explanation of each collection: +The RagLoader creates several collections in ArangoDB to store different +aspects of your knowledge graph. See below a detailed explanation of each +collection. -### Documents Collection -- **Purpose**: Stores the original text document that were processed +### Documents collection + +- **Purpose**: Stores the original text document that were processed. - **Key Fields**: - - `_key`: Unique identifier for the document - - `content`: The full text content of the document -- **Usage**: Acts as the root level container for all document-related data + - `_key`: Unique identifier for the document. + - `content`: The full text content of the document. +- **Usage**: Acts as the root level container for all document-related data. ### Chunks Collection -- **Purpose**: Stores text chunks extracted from documents for better processing and analysis + +- **Purpose**: Stores text chunks extracted from documents for better processing and analysis. - **Key Fields**: - - `_key`: Unique identifier for the chunk - - `content`: The text content of the chunk - - `tokens`: Number of tokens in the chunk - - `chunk_order_index`: Position of the chunk in the original document -- **Usage**: Enables granular analysis of document content and maintains document structure + - `_key`: Unique identifier for the chunk. + - `content`: The text content of the chunk. + - `tokens`: Number of tokens in the chunk. + - `chunk_order_index`: Position of the chunk in the original document. +- **Usage**: Enables granular analysis of document content and maintains document structure. ### Entities Collection + - **Purpose**: Stores entities extracted from the text, such as persons, organizations, concepts, etc. - **Key Fields**: - - `_key`: Unique identifier for the entity - - `entity_name`: Name of the entity - - `entity_type`: Type of entity (e.g., person, organization) - - `description`: Description of the entity - - `embedding`: Vector representation of the entity for similarity search - - `clusters`: Community clusters the entity belongs to -- **Usage**: Enables entity-based querying and semantic search + - `_key`: Unique identifier for the entity. + - `entity_name`: Name of the entity. + - `entity_type`: Type of entity (e.g., person, organization). + - `description`: Description of the entity. + - `embedding`: Vector representation of the entity for similarity search. + - `clusters`: Community clusters the entity belongs to. +- **Usage**: Enables entity-based querying and semantic search. ### Communities Collection -- **Purpose**: Stores thematic clusters of related entities that form meaningful communities within your documents. Each community represents a cohesive group of concepts, characters, or themes that are closely related and interact with each other. These communities help identify and analyze the main narrative threads, character relationships, and thematic elements in your documents. + +- **Purpose**: Stores thematic clusters of related entities that form meaningful + communities within your documents. Each community represents a cohesive group + of concepts, characters, or themes that are closely related and interact with + each other. These communities help identify and analyze the main narrative + threads, character relationships, and thematic elements in your documents. - **Key Fields**: - - `_key`: Unique identifier for the community - - `title`: Cluster ID to which this community belongs to - - `report_string`: A detailed markdown-formatted analysis that explains the community's theme, key relationships, and significance. This includes sections on main characters, their roles, relationships, and the impact of key events or locations. + - `_key`: Unique identifier for the community. + - `title`: Cluster ID to which this community belongs to. + - `report_string`: A detailed markdown-formatted analysis that explains the + community's theme, key relationships, and significance. This includes + sections on main characters, their roles, relationships, and the impact of key events or locations. - `report_json`: Structured data containing: - - `title`: The main theme or focus of the community - - `summary`: A concise overview of the community's central narrative - - `rating`: A numerical score indicating the community's significance (higher the better) - - `rating_explanation`: Justification for the rating - - `findings`: An array of detailed analyses, each containing a summary and explanation of key aspects - - `level`: The hierarchical level of the community (e.g., 1 for top-level communities) - - `occurrence`: A normalized score (ranging from 0 to 1) showing the relative frequency with which this community is mentioned or identified throughout your documents. A value close to 1 means this community is very common in your data and a value near 0 means it is rare. - - `sub_communities`: References to more specific sub-communities that are part of this larger community + - `title`: The main theme or focus of the community. + - `summary`: A concise overview of the community's central narrative. + - `rating`: A numerical score indicating the community's significance (the higher, the better). + - `rating_explanation`: Justification for the rating. + - `findings`: An array of detailed analyses, each containing a summary and explanation of key aspects. + - `level`: The hierarchical level of the community (e.g., `1` for top-level communities). + - `occurrence`: A normalized score (ranging from `0` to `1`) showing the relative frequency with which this community is mentioned or identified throughout your documents. A value close to 1 means this community is very common in your data and a value near `0` means it is rare. + - `sub_communities`: References to more specific sub-communities that are part of this larger community. - **Usage**: Enables you to: - - Identify and analyze major narrative threads and themes - - Understand complex relationships between characters and concepts - - Track the significance and impact of different story elements - - Navigate through hierarchical relationships between themes - - Discover patterns and recurring elements in your documents + - Identify and analyze major narrative threads and themes. + - Understand complex relationships between characters and concepts. + - Track the significance and impact of different story elements. + - Navigate through hierarchical relationships between themes. + - Discover patterns and recurring elements in your documents. ### Relations Collection -- **Purpose**: Stores relationships between different nodes in the graph + +- **Purpose**: Stores relationships between different nodes in the graph. - **Key Fields**: - - `_from`: Source node reference - - `_to`: Target node reference - - `type`: Type of relationship (e.g., "PART_OF", "MENTIONED_IN", "RELATED_TO", "IN_COMMUNITY") + - `_from`: Source node reference. + - `_to`: Target node reference. + - `type`: Type of relationship (e.g., **PART_OF**, **MENTIONED_IN**, **RELATED_TO**, **IN_COMMUNITY**). - Additional metadata depending on relationship type (Entity to Entity): - - `weight`: Relationship strength (higher the better) - - `description`: Description of the relationship - - `source_id`: Source of the relationship - - `order`: Order of the relationship -- **Usage**: Enables traversal and analysis of relationships between different elements + - `weight`: Relationship strength (the higher, the better). + - `description`: Description of the relationship. + - `source_id`: Source of the relationship. + - `order`: Order of the relationship. +- **Usage**: Enables traversal and analysis of relationships between different elements. ### Relationship Types + The system creates several types of relationships between nodes: -1. **PART_OF**: Links chunks to their parent documents -2. **MENTIONED_IN**: Connects entities to the chunks where they are mentioned -3. **RELATED_TO**: Shows relationships between different entities -4. **IN_COMMUNITY**: Associates entities with their community groups +1. **PART_OF**: Links chunks to their parent documents. +2. **MENTIONED_IN**: Connects entities to the chunks where they are mentioned. +3. **RELATED_TO**: Shows relationships between different entities. +4. **IN_COMMUNITY**: Associates entities with their community groups. ### Vector Search Capabilities + The system automatically creates vector indexes on the `embedding` field in the Entities collection, enabling: - Semantic similarity search - Nearest neighbor queries - Efficient vector-based retrieval -## Available Deployment Options: +## Deployment options You can choose between two deployment options based on your needs: -1. If you're working in an air-gapped environment or need to keep your data private, you can use the private LLM mode with Triton Inference Server. This option allows you to run the service completely within your own infrastructure. The Triton Inference Server is a crucial component when running in private LLM mode. It serves as the backbone for running your language (LLM) and embedding models on youe own machines, ensuring your data never leaves your infrastructure. The server handles all the complex model operations, from processing text to generating embeddings, and provides both HTTP and gRPC interfaces for communication. +### Private LLM -2. Alternatively, if you prefer a simpler setup and don't have specific privacy requirements, you can use the public LLM mode. This option connects to cloud-based services like OpenAI's models via the OpenAI API or a large array of models (Gemini, Anthropic, publicly hosted open-source models, etc.) via the OpenRouter option. +If you're working in an air-gapped environment or need to keep your data +private, you can use the private LLM mode with Triton Inference Server. +This option allows you to run the service completely within your own +infrastructure. The Triton Inference Server is a crucial component when +running in private LLM mode. It serves as the backbone for running your +language (LLM) and embedding models on your own machines, ensuring your +data never leaves your infrastructure. The server handles all the complex +model operations, from processing text to generating embeddings, and provides +both HTTP and gRPC interfaces for communication. +### Public LLM -### How to install RagLoader Service +Alternatively, if you prefer a simpler setup and don't have specific privacy +requirements, you can use the public LLM mode. This option connects to cloud-based +services like OpenAI's models via the OpenAI API or a large array of models +(Gemini, Anthropic, publicly hosted open-source models, etc.) via the OpenRouter option. -As mentioned RagLoader service can be configured to use either Triton Inference Server (for private LLM deployments) or OpenAI / OpenRouter (for public LLM deployments). -To start the service, use GenAI service endpoint `/v1/graphragimporter`. Please refer to the documentation of GenAI service for more information on how to use it. + +## Installation + +The RagLoader service can be configured to use either: +- Triton Inference Server (for private LLM deployments) +- OpenAI (for public LLM deployments) +- OpenRouter (for public LLM deployments) + +To start the service, use the GenAI service endpoint `/v1/graphragimporter`. +Please refer to the documentation of [GenAI service](gen-ai.md) for more +information on how to use it. Here are the configuration options for all three options: -#### Option 1: Using Triton Inference Server (Private LLM) +### Using Triton Inference Server (Private LLM) -First setup and install LLM-Host service with LLM and embedding models of your choice. The setup will use Triton Inference Server and mlflow at the backend. Please refer to below documentation for more dtetail: +First setup and install LLM Host service with LLM and embedding models of your choice. The setup will use Triton Inference Server and mlflow at the backend. Please refer to below documentation for more detail: // @docs-team please insert reference to GenAI/Triton documentation here Once the LLM-host service is installed and running successfully, then you can start the loader service using the below reference: @@ -132,13 +168,14 @@ Once the LLM-host service is installed and running successfully, then you can st } ``` +Where: - `username`: ArangoDB database user with permissions to create and modify collections - `db_name`: Name of the ArangoDB database where the knowledge graph will be stored - `api_provider`: Specifies which LLM provider to use - `triton_url`: URL of your Triton Inference Server instance. This should be the URL where your LLM-host service is running - `triton_model`: Name of the LLM model to use for text processing -#### Using OpenAI +### Using OpenAI (Public LLM) ```json { @@ -151,19 +188,26 @@ Once the LLM-host service is installed and running successfully, then you can st } ``` +Where: - `username`: ArangoDB database user with permissions to create and modify collections - `db_name`: Name of the ArangoDB database where the knowledge graph will be stored - `api_provider`: Specifies which LLM provider to use - `openai_api_key`: Your OpenAI API key -Note: By default for openai api we use gpt-4o-mini and text-embedding-3-small models as LLM and embedding model respectively. - +{{< info >}} +By default, for OpenAI API, the service is using +`gpt-4o-mini` and `text-embedding-3-small` models as LLM and +embedding model respectively. +{{< /info >}} ### Using OpenRouter (Gemini, Anthropic, etc.) -OpenRouter makes it possible to connect to a huge array of LLM API providers, including non-OpenAI LLMs like Gemini Flash, Anthropic Claude and publicly hosted open-source models. +OpenRouter makes it possible to connect to a huge array of LLM API +providers, including non-OpenAI LLMs like Gemini Flash, Anthropic Claude +and publicly hosted open-source models. -When using the OpenRouter option, the LLM responses are served via OpenRouter while OpenAI is used for the embedding model. +When using the OpenRouter option, the LLM responses are served via OpenRouter +while OpenAI is used for the embedding model. ```json { @@ -178,6 +222,7 @@ When using the OpenRouter option, the LLM responses are served via OpenRouter wh } ``` +Where: - `username`: ArangoDB database user with permissions to access collections - `db_name`: Name of the ArangoDB database where the knowledge graph is stored - `api_provider`: Specifies which LLM provider to use @@ -185,14 +230,17 @@ When using the OpenRouter option, the LLM responses are served via OpenRouter wh - `openrouter_api_key`: Your OpenRouter API key (for the LLM) - `openrouter_model`: Desired LLM (optional; default is `mistral-nemo`) -> **Note** -> When using OpenRouter, we default to `mistral-nemo` for generation (via OpenRouter) and `text-embedding-3-small` for embeddings (via OpenAI). -## Building Knowledge Graphs +{{< info >}} +When using OpenRouter, the service defaults to `mistral-nemo` for generation +(via OpenRouter) and `text-embedding-3-small` for embeddings (via OpenAI). +{{< /info >}} -Once service is installed successfully, you can follow the following steps to send an input file to the loader service: +## Building Knowledge Graphs -1. Prepare your text document for processing (text format with UTF-8 encoding or markdown files) +Once the service is installed successfully, you can follow the following steps +to send an input file to the loader service: +1. Prepare your text document for processing (text format with UTF-8 encoding or markdown files). 2. Send the document to the RagLoader service using HTTP: ```bash # Base64 encode your document @@ -208,23 +256,22 @@ Once service is installed successfully, you can follow the following steps to se ``` Replace the following placeholders: - - ``: Your ArangoDB Platform URL - - ``: The URL postfix configured in your deployment + - ``: Your ArangoDB Platform URL. + - ``: The URL postfix configured in your deployment. The service will: - - Process the document using the configured LLM model - - Generate embeddings using the embedding model - - Build a knowledge graph - - Import the graph into your ArangoDB database - + - Process the document using the configured LLM model. + - Generate embeddings using the embedding model. + - Build a knowledge graph. + - Import the graph into your ArangoDB database. -### Verifying the Import +### Verifying the import You can verify that the import was successful by checking your ArangoDB database: -1. Connect to your ArangoDB instance -2. Navigate to the specified database +1. Connect to your ArangoDB instance. +2. Navigate to the specified database. 3. Verify that the following collections exist: - `knowledge_graph_vertices`: Contains the nodes of the knowledge graph i.e. documents, chunks, communities, and entities. - - `knowledge_graph_edges`: Contains the relationships between nodes i.e. relations. + - `knowledge_graph_edges`: Contains the relationships between nodes i.e. relations. \ No newline at end of file From e0a2f62834f975ab54a1467d1d62df5776d407f1 Mon Sep 17 00:00:00 2001 From: Paula Date: Tue, 8 Jul 2025 16:33:13 +0200 Subject: [PATCH 15/48] more formatting --- .../data-science/graphrag/services/mlflow.md | 21 +-- .../graphrag/services/rag-loader.md | 1 - .../graphrag/services/rag-retriever.md | 176 ++++++++++-------- 3 files changed, 108 insertions(+), 90 deletions(-) diff --git a/site/content/3.13/data-science/graphrag/services/mlflow.md b/site/content/3.13/data-science/graphrag/services/mlflow.md index e8e3900e77..ba8167a950 100644 --- a/site/content/3.13/data-science/graphrag/services/mlflow.md +++ b/site/content/3.13/data-science/graphrag/services/mlflow.md @@ -26,7 +26,7 @@ MLflow model registry. {{< info >}} You can find detailed instructions about how to organize the format of a model for a -dedicated LLM host service in the official [MLflow](https://mlflow.org/docs/latest/genai/) +dedicated LLM host service in the official [MLflow]((https://mlflow.org/docs/latest/index.html) documentation. {{< /info >}} @@ -46,7 +46,7 @@ MLflow consists of the following core components: - **Evaluation**: Provides tools for in-depth model analysis, facilitating objective model comparison. - **Observability**: Ensures that the ML lifecycle is traceable and reproducible through various metrics and logs. -## Getting Started +## Quickstart The ArangoDB MLflow service is **started by default**. @@ -90,11 +90,11 @@ First, install the MLflow client: pip install mlflow ``` -### Programmatic Access +### Programmatic access -There are two approaches for programmatic access to your ArangoDB MLflow service: +There are two approaches for programmatic access to your ArangoDB MLflow service. -#### Approach 1: Configure in Python Code +#### Configuration in Python ```python import mlflow @@ -109,7 +109,7 @@ with mlflow.start_run(): mlflow.log_artifact("local_file.txt") ``` -#### Approach 2: Use Environment Variables +#### Using environment variables Set the environment variables in your shell: @@ -128,7 +128,7 @@ with mlflow.start_run(): mlflow.log_artifact("local_file.txt") ``` -### Health Check +### Health check To test whether the service is running, you can use the following snippet: @@ -136,14 +136,9 @@ To test whether the service is running, you can use the following snippet: curl -H "Authorization: Bearer your-bearer-token-here" https://:8529/mlflow/health ``` -Expected output on success: HTTP `200` status with response body `OK` +Expected output on success: HTTP `200` status with response body `OK`. ## API Reference For detailed API documentation, refer to the official [MLflow REST API Reference](https://mlflow.org/docs/latest/api_reference/rest-api.html). - -## Additional Resources - -The official MLflow documentation can be found at: -[MLflow Documentation](https://mlflow.org/docs/latest/index.html) diff --git a/site/content/3.13/data-science/graphrag/services/rag-loader.md b/site/content/3.13/data-science/graphrag/services/rag-loader.md index afe557b2a1..ced8099440 100644 --- a/site/content/3.13/data-science/graphrag/services/rag-loader.md +++ b/site/content/3.13/data-science/graphrag/services/rag-loader.md @@ -147,7 +147,6 @@ The RagLoader service can be configured to use either: To start the service, use the GenAI service endpoint `/v1/graphragimporter`. Please refer to the documentation of [GenAI service](gen-ai.md) for more information on how to use it. -Here are the configuration options for all three options: ### Using Triton Inference Server (Private LLM) diff --git a/site/content/3.13/data-science/graphrag/services/rag-retriever.md b/site/content/3.13/data-science/graphrag/services/rag-retriever.md index 2b1064df77..2062c34047 100644 --- a/site/content/3.13/data-science/graphrag/services/rag-retriever.md +++ b/site/content/3.13/data-science/graphrag/services/rag-retriever.md @@ -3,74 +3,80 @@ title: RagRetriever Service menuTitle: RagRetriever description: >- RagRetriever is a powerful service that enables intelligent search and - retrieval from knowledge graphs created by the GraphRAG Importer -# TODO: GraphRAG Importer == RagLoader? + retrieval from knowledge graphs created by the RAGLoader weight: 15 --- -## Summary +## Overview The RagRetriever service offers two distinct search methods: +- **Global search**: Analyzes entire document to identify themes and patterns, + perfect for high-level insights and comprehensive summaries. +- **Local search**: Focuses on specific entities and their relationships, ideal + for detailed queries about particular concepts. -- **Global Search**: Analyzes entire document to identify themes and patterns, perfect for high-level insights and comprehensive summaries. -- **Local Search**: Focuses on specific entities and their relationships, ideal for detailed queries about particular concepts. - -The service supports both private (Triton Inference Server) and public (OpenAI) LLM deployments, making it flexible for various security and infrastructure requirements. With simple HTTP endpoints, you can easily query your knowledge graph and get contextually relevant responses. +The service supports both private (Triton Inference Server) and public (OpenAI) +LLM deployments, making it flexible for various security and infrastructure +requirements. With simple HTTP endpoints, you can easily query your knowledge +graph and get contextually relevant responses. -Key features: +**Key features:** - Dual search methods for different query types - Support for both private and public LLM deployments - Simple REST API interface - Integration with ArangoDB knowledge graphs - Configurable community hierarchy levels - - -## Overview - -The RagRetriever service enables intelligent search and retrieval of information from your knowledge graph. It provides two powerful search methods - Global Search and Local Search - that leverage the structured knowledge graph created by the GraphRAG Importer to deliver accurate and contextually relevant responses to your natural language queries. - -## Search Methods +## Search methods -### Global Search +The RagRetriever service enables intelligent search and retrieval of information +from your knowledge graph. It provides two powerful search methods, global Search +and local Search, that leverage the structured knowledge graph created by the RAGLoader +to deliver accurate and contextually relevant responses to your natural language queries. -Global Search is designed for queries that require understanding and aggregation of information across your entire document. It's particularly effective for questions about overall themes, patterns, or high-level insights in your data. +### Global search -#### How Global Search Works +Global search is designed for queries that require understanding and aggregation +of information across your entire document. It's particularly effective for questions +about overall themes, patterns, or high-level insights in your data. -1. **Community-Based Analysis**: Uses pre-generated community reports from your knowledge graph to understand the overall structure and themes of your data -2. **Map-Reduce Processing**: - - **Map Stage**: Processes community reports in parallel, generating intermediate responses with rated points - - **Reduce Stage**: Aggregates the most important points to create a comprehensive final response +- **Community-Based Analysis**: Uses pre-generated community reports from your + knowledge graph to understand the overall structure and themes of your data, +- **Map-Reduce Processing**: + - **Map Stage**: Processes community reports in parallel, generating intermediate responses with rated points. + - **Reduce Stage**: Aggregates the most important points to create a comprehensive final response. -#### Best Use Cases +**Best use cases**: - "What are the main themes in the dataset?" - "Summarize the key findings across all documents" - "What are the most important concepts discussed?" -### Local Search +### Local search -Local Search focuses on specific entities and their relationships within your knowledge graph. It's ideal for detailed queries about particular concepts, entities, or relationships. +Local search focuses on specific entities and their relationships within your +knowledge graph. It is ideal for detailed queries about particular concepts, +entities, or relationships. -#### How Local Search Works +- **Entity Identification**: Identifies relevant entities from the knowledge graph based on the query. +- **Context Gathering**: Collects: + - Related text chunks from original documents. + - Connected entities and their strongest relationships. + - Entity descriptions and attributes. + - Context from the community each entity belongs to. +- **Prioritized Response**: Generates a response using the most relevant gathered information. -1. **Entity Identification**: Identifies relevant entities from the knowledge graph based on the query -2. **Context Gathering**: Collects: - - Related text chunks from original documents - - Connected entities and their strongest relationships - - Entity descriptions and attributes - - Context from the community each entity belongs to -3. **Prioritized Response**: Generates a response using the most relevant gathered information - -#### Best Use Cases +**Best use cases**: - "What are the properties of [specific entity]?" - "How is [entity A] related to [entity B]?" - "What are the key details about [specific concept]?" -## How to install RagRetriever Service +## Installation + +The RagRetriever service can be configured to use either the Triton Inference Server +(for private LLM deployments) or OpenAI/OpenRouter (for public LLM deployments). -The RagRetriever service can be configured to use either Triton Inference Server (for private LLM deployments) or OpenAI / OpenRouter (for public LLM deployments). -To start the service, use GenAI service endpoint `/v1/graphragretriever`. Please refer to the documentation of GenAI service for more information on how to use it. -Here are the configuration options for all 3 options: +To start the service, use the GenAI service endpoint `/v1/graphragretriever`. +Please refer to the documentation of [GenAI service](gen-ai.md) for more +information on how to use it. ### Using Triton Inference Server (Private LLM) @@ -91,13 +97,14 @@ Once the LLM-host service is installed and running successfully, then you can st } ``` -- `username`: ArangoDB database user with permissions to access collections -- `db_name`: Name of the ArangoDB database where the knowledge graph is stored -- `api_provider`: Specifies which LLM provider to use -- `triton_url`: URL of your Triton Inference Server instance. This should be the URL where your LLM-host service is running -- `triton_model`: Name of the LLM model to use for text processing +Where: +- `username`: ArangoDB database user with permissions to access collections. +- `db_name`: Name of the ArangoDB database where the knowledge graph is stored. +- `api_provider`: Specifies which LLM provider to use. +- `triton_url`: URL of your Triton Inference Server instance. This should be the URL where your `LLM-host` service is running. +- `triton_model`: Name of the LLM model to use for text processing. -### Using OpenAI +### Using OpenAI (Public LLM) ```json { @@ -110,17 +117,26 @@ Once the LLM-host service is installed and running successfully, then you can st } ``` +Where: - `username`: ArangoDB database user with permissions to access collections - `db_name`: Name of the ArangoDB database where the knowledge graph is stored - `api_provider`: Specifies which LLM provider to use - `openai_api_key`: Your OpenAI API key -Note: By default for OpenAI API, we use gpt-4-mini and text-embedding-3-small models as LLM and embedding model respectively. +{{< info >}} +By default, for OpenAI API, the service is using +`gpt-4o-mini` and `text-embedding-3-small` models as LLM and +embedding model respectively. +{{< /info >}} + ### Using OpenRouter (Gemini, Anthropic, etc.) -OpenRouter makes it possible to connect to a huge array of LLM API providers, including non-OpenAI LLMs like Gemini Flash, Anthropic Claude and publicly hosted open-source models. +OpenRouter makes it possible to connect to a huge array of LLM API providers, +including non-OpenAI LLMs like Gemini Flash, Anthropic Claude and publicly hosted +open-source models. -When using the OpenRouter option, the LLM responses are served via OpenRouter while OpenAI is used for the embedding model. +When using the OpenRouter option, the LLM responses are served via OpenRouter while +OpenAI is used for the embedding model. ```json { @@ -135,23 +151,27 @@ When using the OpenRouter option, the LLM responses are served via OpenRouter wh } ``` -- `username`: ArangoDB database user with permissions to access collections -- `db_name`: Name of the ArangoDB database where the knowledge graph is stored -- `api_provider`: Specifies which LLM provider to use -- `openai_api_key`: Your OpenAI API key (for the embedding model) -- `openrouter_api_key`: Your OpenRouter API key (for the LLM) -- `openrouter_model`: Desired LLM (optional; default is `mistral-nemo`) +Where: +- `username`: ArangoDB database user with permissions to access collections. +- `db_name`: Name of the ArangoDB database where the knowledge graph is stored. +- `api_provider`: Specifies which LLM provider to use. +- `openai_api_key`: Your OpenAI API key (for the embedding model). +- `openrouter_api_key`: Your OpenRouter API key (for the LLM). +- `openrouter_model`: Desired LLM (optional; default is `mistral-nemo`). -> **Note** -> When using OpenRouter, we default to `mistral-nemo` for generation (via OpenRouter) and `text-embedding-3-small` for embeddings (via OpenAI). -## Using the Retriever Service +{{< info >}} +When using OpenRouter, the service defaults to `mistral-nemo` for generation +(via OpenRouter) and `text-embedding-3-small` for embeddings (via OpenAI). +{{< /info >}} -### Executing Queries +## Executing queries -After the retriever service is installed successfully. You can interact with the retriever service using the following HTTP endpoint: +After the RagRetriever service is installed successfully, you can interact with +it using the following HTTP endpoints, based on the selected search method. -#### Local Search +{{< tabs "executing-queries" >}} +{{< tab "Local search" >}} ```bash curl -X POST /v1/graphrag-query \ -H "Content-Type: application/json" \ @@ -161,8 +181,9 @@ curl -X POST /v1/graphrag-query \ "provider": 0 }' ``` +{{< /tab >}} -#### Global Search +{{< tab "Global search" >}} ```bash curl -X POST /v1/graphrag-query \ @@ -174,32 +195,35 @@ curl -X POST /v1/graphrag-query \ "provider": 0 }' ``` +{{< /tab >}} -The request parameters are: -- `query`: Your search query text -- `level`: The community hierarchy level to use for the search (1 for top-level communities) -- `query_type`: The type of search to perform - - `1`: Global Search - - `2`: Local Search +{{< /tabs >}} + +The request parameters are the following: +- `query`: Your search query text. +- `level`: The community hierarchy level to use for the search (`1` for top-level communities). +- `query_type`: The type of search to perform. + - `1`: Global search. + - `2`: Local search. - `provider`: The LLM provider to use - `0`: OpenAI (or OpenRouter) - `1`: Triton -### Health Check +## Health check + +You can also monitor the service health: -Monitor the service health: ```bash GET /v1/health ``` ## Best Practices -1. **Choose the Right Search Method**: - - Use Global Search for broad, thematic queries - - Use Local Search for specific entity or relationship queries - +- **Choose the right search method**: + - Use global search for broad, thematic queries. + - Use local search for specific entity or relationship queries. -2. **Performance Considerations**: - - Global Search may take longer due to its map-reduce process - - Local Search is typically faster for concrete queries +- **Performance considerations**: + - Global search may take longer due to its map-reduce process. + - Local search is typically faster for concrete queries. \ No newline at end of file From f44021098d892fa12a60d4862d8961652cf107dd Mon Sep 17 00:00:00 2001 From: Paula Date: Tue, 8 Jul 2025 16:47:11 +0200 Subject: [PATCH 16/48] add initial docs for triton --- .../services/triton-inference-server.md | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 site/content/3.13/data-science/graphrag/services/triton-inference-server.md diff --git a/site/content/3.13/data-science/graphrag/services/triton-inference-server.md b/site/content/3.13/data-science/graphrag/services/triton-inference-server.md new file mode 100644 index 0000000000..1a332d4c53 --- /dev/null +++ b/site/content/3.13/data-science/graphrag/services/triton-inference-server.md @@ -0,0 +1,122 @@ +--- +title: Triton Inference Server +menuTitle: Triton Inference Server +description: >- + Private LLM using the Triton Inference Server +weight: 30 +--- + +## Overview + +The **LLM Host Triton** service provides scalable deployment of Large Language Models (LLMs) using NVIDIA Triton Inference Server. It enables efficient serving of machine learning models with support for HTTP/gRPC APIs, customizable routing, and seamless Kubernetes integration. + +## Service Deployment + +The service is deployed as a **Kubernetes application** using Helm charts in the ArangoDB platform ecosystem. It integrates with: +- MLFlow model registry for model management +- Storage sidecar for artifact storage + +## Installation via Gen-AI Service API + +To install the LLM Host Triton service, send an API request to the **gen-ai service** with the following parameters: + +### Required Parameters + +```json +{ + "models": "model_name@version,model_name2@version2", + + +} +``` + +### Optional Parameters + +```json +{ + "log_level": "INFO", + "profiles": "profile1,profile2" + "resources_requests_memory": "", // Minimum memory required for the container + "resources_requests_cpu": "", // Minimum CPU required for the container + "resources_limits_memory": "", // Maximum memory the container can use + "resources_limits_cpu": "", // Maximum CPU the container can use + "resources_requests_ephemeral_storage": "", // Minimum ephemeral storage required for the container + "resources_limits_ephemeral_storage": "" // Maximum ephemeral storage the container can use +} +``` + +### Parameter Descriptions + +| Parameter | Required | Description | Example | +|-----------|----------|-------------|---------| +| `models` | ✅ | Comma-separated list of model_name@version pairs | `"mistral@1,t5@3"` | +| `resources_requests_memory` | ❌ | Minimum memory required | `"8Gi"` | +| `resources_requests_cpu` | ❌ | Minimum CPU cores required | `"2"` | +| `resources_limits_memory` | ❌ | Maximum memory allowed | `"16Gi"` | +| `resources_limits_cpu` | ❌ | Maximum CPU cores allowed | `"4"` | +| `log_level` | ❌ | Logging level | `"INFO"` (default) | +| `profiles` | ❌ | Platform profiles to apply | `"gpu,performance"` | + +## Model Requirements + +### Python Backend Mandatory + +All models deployed on this service **must use the Python backend**. Each model requires: + +1. **`model.py`** - Python implementation with: + ```python + class TritonPythonModel: + def initialize(self, args): + # Load your model here + pass + + def execute(self, requests): + # Process inference requests + pass + + def finalize(self): + # Cleanup resources + pass + ``` + +2. **`config.pbtxt`** - Triton configuration: + ``` + name: "your_model_name" + backend: "python" + max_batch_size: 1 + input: [...] + output: [...] + ``` + +### Model Storage + +Models must be stored in the **MLFlow model registry** and will be automatically downloaded and loaded by the service. + +For detailed guidance on creating and uploading a python-backend model, refer to the [LLM Host Registry Services documentation](https://arangodb.atlassian.net/wiki/spaces/TUP/pages/2724757505/LLM+Host+Registry+Services). + +## Service Endpoints + +Once deployed, the service exposes two endpoints: + +| Port | Protocol | Purpose | +|------|----------|---------| +| 8000 | HTTP/REST | Model inference, management, status | +| 8001 | gRPC | High-performance binary communication | + +Triton Inference Server is not intended to be used in a standalone mode, but rather through other services +consuming these endpoints to send infer requests for example. So please refer to the service with which you are using Triton Inference Server for more details. + +Therefore, Triton service http endpoint can be accessed from inside the ArangoDB platform as follows: `https://{SERVICE_ID}.{KUBERNETES_NAMESPACE}.svc:8000`, +where KUBERNETES_NAMESPACE is the namespace of the ArangoDB platform and you can find it in an environment +variable called `KUBERNETES_NAMESPACE`. And SERVICE_ID is the ID of the LLM Host Triton service, which can be found in the `gen-ai service` response. For example, to check the server health, you need to send a GET request to `https://{SERVICE_ID}.{KUBERNETES_NAMESPACE}.svc:8000/v2/health/ready`. + +Similarly, you can access gRPC endpoints on port 8001, please refer to the official Triton documentation below for more details. + +From outside the ArangoDB platform, you can access the Triton Inference Server http endpoints using the following URL: `https://{BASE_URL}:8529/llm/{SERVICE_POSTFIX}/`, where BASE_URL is the base URL of the ArangoDB platform and service_postfix is the postfix of the LLM Host Triton service, it is the last 5 characters of the service ID. +For example, to check the server health from outside the platform, send a GET request to `https://{BASE_URL}:8529/llm/{SERVICE_POSTFIX}/v2/health/ready`. + +## Triton Inference Server Endpoints + +The service exposes all standard Triton Inference Server endpoints at port 8000 for http protocol or port 8001 for gRPC protocol for internal uage inside ArangoDB platform, and only http protocol is supported from outside the ArangoDB platform. This includes the following endpoints: model inference, model management, model status, and health check. + +For complete documentation on available endpoints and their usage, refer to the [Triton Inference Server HTTP API documentation](https://docs.nvidia.com/deeplearning/triton-inference-server/archives/triton_inference_server_1120/triton-inference-server-guide/docs/http_grpc_api.html#section-api-health). \ No newline at end of file From af94dceef8451a0ab5f503a523b8c8a29d0ecd3a Mon Sep 17 00:00:00 2001 From: Paula Date: Wed, 9 Jul 2025 14:14:25 +0200 Subject: [PATCH 17/48] mark txt2aql as draft (available only in q3) --- .../data-science/graphrag/services/natural-language-to-aql.md | 1 + 1 file changed, 1 insertion(+) diff --git a/site/content/3.13/data-science/graphrag/services/natural-language-to-aql.md b/site/content/3.13/data-science/graphrag/services/natural-language-to-aql.md index 1aab97abc1..981d57f468 100644 --- a/site/content/3.13/data-science/graphrag/services/natural-language-to-aql.md +++ b/site/content/3.13/data-science/graphrag/services/natural-language-to-aql.md @@ -5,6 +5,7 @@ description: >- The Natural Language to AQL Translation Service is a powerful tool that allows you to interact with your ArangoDB database using natural language queries weight: 20 +draft: true --- ## Overview From ef4e2f54bd47c9be30440ff585da5a806f85456d Mon Sep 17 00:00:00 2001 From: Paula Date: Wed, 9 Jul 2025 17:01:53 +0200 Subject: [PATCH 18/48] adjust triton, headlines, add links --- .../data-science/graphrag/services/_index.md | 19 +---- .../data-science/graphrag/services/gen-ai.md | 26 +++--- .../data-science/graphrag/services/mlflow.md | 19 +++-- .../graphrag/services/rag-loader.md | 36 +++++---- .../graphrag/services/rag-retriever.md | 20 +++-- .../services/triton-inference-server.md | 81 ++++++++++++------- 6 files changed, 107 insertions(+), 94 deletions(-) diff --git a/site/content/3.13/data-science/graphrag/services/_index.md b/site/content/3.13/data-science/graphrag/services/_index.md index 8f7a628772..38393bc8aa 100644 --- a/site/content/3.13/data-science/graphrag/services/_index.md +++ b/site/content/3.13/data-science/graphrag/services/_index.md @@ -1,23 +1,6 @@ --- title: GraphRAG services menuTitle: Services -descriptions: >- - The GraphRAG solution is implemented as a set of Kubernetes services -weight: 10 +description: '' --- -## Services - -### GenAI - -### RAGLoader - -### RAGRetriever - -### LLM fine tuning - -### Auto-Tuna - -### Triton integration - -### Natural language service diff --git a/site/content/3.13/data-science/graphrag/services/gen-ai.md b/site/content/3.13/data-science/graphrag/services/gen-ai.md index 148f574398..010bb33234 100644 --- a/site/content/3.13/data-science/graphrag/services/gen-ai.md +++ b/site/content/3.13/data-science/graphrag/services/gen-ai.md @@ -91,11 +91,11 @@ details about ArangoDB authentication and JWT tokens, see the [ArangoDB Authentication](https://docs.arangodb.com/stable/develop/http-api/authentication/#jwt-user-tokens) documentation. -## Complete Service Lifecycle Example +## Complete Service lifecycle example The example below shows how to install, monitor, and uninstall a RAGLoader service. -### Step 1: Install the Service +### Step 1: Installing the service ```bash curl -X POST https://:8529/gen-ai/v1/graphragimporter \ @@ -124,7 +124,7 @@ curl -X POST https://:8529/gen-ai/v1/graphragimporter \ } ``` -### Step 2: Check Service Status +### Step 2: Checking the service status ```bash curl -X GET https://:8529/gen-ai/v1/service/arangodb-graphrag-importer-of1ml \ @@ -143,7 +143,7 @@ curl -X GET https://:8529/gen-ai/v1/service/arangodb-graphrag- } ``` -### Step 3: Uninstall the Service +### Step 3: Uninstaling the service ```bash curl -X DELETE https://:8529/gen-ai/v1/service/arangodb-graphrag-importer-of1ml \ @@ -167,24 +167,24 @@ curl -X DELETE https://:8529/gen-ai/v1/service/arangodb-graphr - **Authentication**: All requests use the same Bearer token in the `Authorization` header {{< /info >}} -### Customizing the Example +### Customizing the example Replace the following values with your actual configuration: -- `` - Your database username -- `` - Target database name -- `` - Your API provider (e.g., "triton") -- `` - Your LLM host service URL -- `` - Your Triton model name (e.g., "mistral-nemo-instruct") -- `` - Your authentication token +- `` - Your database username. +- `` - Target database name. +- `` - Your API provider (e.g., `triton`) +- `` - Your LLM host service URL. +- `` - Your Triton model name (e.g., `mistral-nemo-instruct`). +- `` - Your authentication token. -## Service Configuration +## Service configuration The GenAI orchestrator service is **started by default**. It will be available at the following URL: `https://:8529/gen-ai/v1/service` -### Health Check +## Health check To test whether the service is running, you can use the following snippet: diff --git a/site/content/3.13/data-science/graphrag/services/mlflow.md b/site/content/3.13/data-science/graphrag/services/mlflow.md index ba8167a950..dc92752fb3 100644 --- a/site/content/3.13/data-science/graphrag/services/mlflow.md +++ b/site/content/3.13/data-science/graphrag/services/mlflow.md @@ -26,7 +26,7 @@ MLflow model registry. {{< info >}} You can find detailed instructions about how to organize the format of a model for a -dedicated LLM host service in the official [MLflow]((https://mlflow.org/docs/latest/index.html) +dedicated LLM host service in the official [MLflow](https://mlflow.org/docs/latest/index.html) documentation. {{< /info >}} @@ -67,7 +67,7 @@ The ArangoDB MLflow service requires authentication. You need a valid Bearer token to access the service. {{< /info >}} -#### Obtaining a Bearer Token +### Obtaining a Bearer Token Before you can authenticate with the MLflow service, you need to obtain a Bearer token. You can generate this token using the ArangoDB authentication API: @@ -82,19 +82,18 @@ For more details about ArangoDB authentication and JWT tokens, see the [ArangoDB Authentication](https://docs.arangodb.com/stable/develop/http-api/authentication/#jwt-user-tokens) documentation. -### Installation +## Installation First, install the MLflow client: ```bash pip install mlflow ``` +There are two approaches for programmatic access to your ArangoDB MLflow service: +- Configuration in Python +- Using environment variables -### Programmatic access - -There are two approaches for programmatic access to your ArangoDB MLflow service. - -#### Configuration in Python +### Configuration in Python ```python import mlflow @@ -109,7 +108,7 @@ with mlflow.start_run(): mlflow.log_artifact("local_file.txt") ``` -#### Using environment variables +### Using environment variables Set the environment variables in your shell: @@ -128,7 +127,7 @@ with mlflow.start_run(): mlflow.log_artifact("local_file.txt") ``` -### Health check +## Health check To test whether the service is running, you can use the following snippet: diff --git a/site/content/3.13/data-science/graphrag/services/rag-loader.md b/site/content/3.13/data-science/graphrag/services/rag-loader.md index ced8099440..c784c5363d 100644 --- a/site/content/3.13/data-science/graphrag/services/rag-loader.md +++ b/site/content/3.13/data-science/graphrag/services/rag-loader.md @@ -10,15 +10,15 @@ weight: 10 The RagLoader service lets you turn text files into a knowledge graph. It supports the following text formats with UTF-8 encoding: -- Plain text -- Markdown +- `.txt` (Plain text) +- `.md` (Markdown) The RagLoader takes your text, analyzes it using the configured language model, and creates a structured knowledge graph. This graph is then imported into your ArangoDB database, where you can query and analyze the relationships between different concepts in your document with the RagRetriever service. -## How ArangoDB collections look like +## What ArangoDB Collections look like after import The RagLoader creates several collections in ArangoDB to store different aspects of your knowledge graph. See below a detailed explanation of each @@ -115,7 +115,7 @@ The system automatically creates vector indexes on the `embedding` field in the ## Deployment options -You can choose between two deployment options based on your needs: +You can choose between two deployment options based on your needs. ### Private LLM @@ -137,7 +137,7 @@ services like OpenAI's models via the OpenAI API or a large array of models (Gemini, Anthropic, publicly hosted open-source models, etc.) via the OpenRouter option. -## Installation +## Installation and configuration The RagLoader service can be configured to use either: - Triton Inference Server (for private LLM deployments) @@ -150,10 +150,14 @@ information on how to use it. ### Using Triton Inference Server (Private LLM) -First setup and install LLM Host service with LLM and embedding models of your choice. The setup will use Triton Inference Server and mlflow at the backend. Please refer to below documentation for more detail: -// @docs-team please insert reference to GenAI/Triton documentation here +The first step is to install the LLM Host service with the LLM and +embedding models of your choice. The setup will the use the +Triton Inference Server and MLflow at the backend. +For more details, please refer to the [Triton Inference Server](./triton-inference-server.md) +and [Mlflow](./mlflow.md) documentation. -Once the LLM-host service is installed and running successfully, then you can start the loader service using the below reference: +Once the `llmhost` service is up-and-running, then you can start the RAGloader +service using the below configuration: ```json { @@ -168,11 +172,11 @@ Once the LLM-host service is installed and running successfully, then you can st ``` Where: -- `username`: ArangoDB database user with permissions to create and modify collections -- `db_name`: Name of the ArangoDB database where the knowledge graph will be stored -- `api_provider`: Specifies which LLM provider to use -- `triton_url`: URL of your Triton Inference Server instance. This should be the URL where your LLM-host service is running -- `triton_model`: Name of the LLM model to use for text processing +- `username`: ArangoDB database user with permissions to create and modify collections. +- `db_name`: Name of the ArangoDB database where the knowledge graph will be stored. +- `api_provider`: Specifies which LLM provider to use. +- `triton_url`: URL of your Triton Inference Server instance. This should be the URL where your `llmhost` service is running. +- `triton_model`: Name of the LLM model to use for text processing. ### Using OpenAI (Public LLM) @@ -236,8 +240,8 @@ When using OpenRouter, the service defaults to `mistral-nemo` for generation ## Building Knowledge Graphs -Once the service is installed successfully, you can follow the following steps -to send an input file to the loader service: +Once the service is installed successfully, you can follow these steps +to send an input file to the RAGloader service: 1. Prepare your text document for processing (text format with UTF-8 encoding or markdown files). 2. Send the document to the RagLoader service using HTTP: @@ -265,7 +269,7 @@ to send an input file to the loader service: - Build a knowledge graph. - Import the graph into your ArangoDB database. -### Verifying the import +## Verifying the import You can verify that the import was successful by checking your ArangoDB database: diff --git a/site/content/3.13/data-science/graphrag/services/rag-retriever.md b/site/content/3.13/data-science/graphrag/services/rag-retriever.md index 2062c34047..dd98f043d3 100644 --- a/site/content/3.13/data-science/graphrag/services/rag-retriever.md +++ b/site/content/3.13/data-science/graphrag/services/rag-retriever.md @@ -80,10 +80,14 @@ information on how to use it. ### Using Triton Inference Server (Private LLM) -First setup and install LLM-Host service with LLM and embedding models of your choice. The setup will use Triton Inference Server and mlflow at the backend. Please refer to below documentation for more detail: -// @docs-team please insert reference to GenAI/Triton documentation here +The first step is to install the LLM Host service with the LLM and +embedding models of your choice. The setup will the use the +Triton Inference Server and MLflow at the backend. +For more details, please refer to the [Triton Inference Server](./triton-inference-server.md) +and [Mlflow](./mlflow.md) documentation. -Once the LLM-host service is installed and running successfully, then you can start the retriever service using the below reference: +Once the `llmhost` service is up-and-running, then you can start the RAGloader +service using the below configuration: ```json { @@ -101,7 +105,7 @@ Where: - `username`: ArangoDB database user with permissions to access collections. - `db_name`: Name of the ArangoDB database where the knowledge graph is stored. - `api_provider`: Specifies which LLM provider to use. -- `triton_url`: URL of your Triton Inference Server instance. This should be the URL where your `LLM-host` service is running. +- `triton_url`: URL of your Triton Inference Server instance. This should be the URL where your `llmhost` service is running. - `triton_model`: Name of the LLM model to use for text processing. ### Using OpenAI (Public LLM) @@ -118,10 +122,10 @@ Where: ``` Where: -- `username`: ArangoDB database user with permissions to access collections -- `db_name`: Name of the ArangoDB database where the knowledge graph is stored -- `api_provider`: Specifies which LLM provider to use -- `openai_api_key`: Your OpenAI API key +- `username`: ArangoDB database user with permissions to access collections. +- `db_name`: Name of the ArangoDB database where the knowledge graph is stored. +- `api_provider`: Specifies which LLM provider to use. +- `openai_api_key`: Your OpenAI API key. {{< info >}} By default, for OpenAI API, the service is using diff --git a/site/content/3.13/data-science/graphrag/services/triton-inference-server.md b/site/content/3.13/data-science/graphrag/services/triton-inference-server.md index 1a332d4c53..a49ceacff0 100644 --- a/site/content/3.13/data-science/graphrag/services/triton-inference-server.md +++ b/site/content/3.13/data-science/graphrag/services/triton-inference-server.md @@ -8,29 +8,31 @@ weight: 30 ## Overview -The **LLM Host Triton** service provides scalable deployment of Large Language Models (LLMs) using NVIDIA Triton Inference Server. It enables efficient serving of machine learning models with support for HTTP/gRPC APIs, customizable routing, and seamless Kubernetes integration. +The **LLM Host Triton** service provides scalable deployment of Large Language Models (LLMs) using the NVIDIA Triton Inference Server. It enables an efficient serving of machine learning models with support for HTTP and gRPC APIs, customizable routing, and seamless Kubernetes integration. -## Service Deployment +## Deployment -The service is deployed as a **Kubernetes application** using Helm charts in the ArangoDB platform ecosystem. It integrates with: +The service is deployed as a **Kubernetes application** using Helm charts in the ArangoDB Platform ecosystem. It integrates with: - MLFlow model registry for model management - Storage sidecar for artifact storage -## Installation via Gen-AI Service API +## Installation via GenAI Service API -To install the LLM Host Triton service, send an API request to the **gen-ai service** with the following parameters: +To install the LLM Host Triton service, send an API request to the **GenAI service** with the following parameters: -### Required Parameters +### Required parameters ```json { - "models": "model_name@version,model_name2@version2", - - + "models": "model_name", } ``` +You can also pass multiple models: +- Without versions: `"model_name_1, model_name_2"` +- With versions: `"model_name_1@version1, model_name_2@version2"` +- Mixed: `"model_name_1, model_name_2@version4"` -### Optional Parameters +### Optional parameters ```json { @@ -45,7 +47,7 @@ To install the LLM Host Triton service, send an API request to the **gen-ai serv } ``` -### Parameter Descriptions +### Parameter descriptions | Parameter | Required | Description | Example | |-----------|----------|-------------|---------| @@ -57,13 +59,14 @@ To install the LLM Host Triton service, send an API request to the **gen-ai serv | `log_level` | ❌ | Logging level | `"INFO"` (default) | | `profiles` | ❌ | Platform profiles to apply | `"gpu,performance"` | -## Model Requirements +## Model requirements -### Python Backend Mandatory +### Python Backend -All models deployed on this service **must use the Python backend**. Each model requires: +All models **must use the Python backend** for compatibility with the Triton service. Each model requires two files: -1. **`model.py`** - Python implementation with: +1. **`model.py`** + Implements the Python backend: ```python class TritonPythonModel: def initialize(self, args): @@ -79,7 +82,8 @@ All models deployed on this service **must use the Python backend**. Each model pass ``` -2. **`config.pbtxt`** - Triton configuration: +2. **`config.pbtxt`** + Triton model configuration file: ``` name: "your_model_name" backend: "python" @@ -88,13 +92,18 @@ All models deployed on this service **must use the Python backend**. Each model output: [...] ``` -### Model Storage +## Uploading a model using MLFLow + + -Models must be stored in the **MLFlow model registry** and will be automatically downloaded and loaded by the service. +## Model storage -For detailed guidance on creating and uploading a python-backend model, refer to the [LLM Host Registry Services documentation](https://arangodb.atlassian.net/wiki/spaces/TUP/pages/2724757505/LLM+Host+Registry+Services). +**All models must be registered in MLFlow.** +The service will automatically download and load models from the MLFlow registry. -## Service Endpoints + + +## Service endpoints Once deployed, the service exposes two endpoints: @@ -103,20 +112,34 @@ Once deployed, the service exposes two endpoints: | 8000 | HTTP/REST | Model inference, management, status | | 8001 | gRPC | High-performance binary communication | + +{{< info >}} Triton Inference Server is not intended to be used in a standalone mode, but rather through other services consuming these endpoints to send infer requests for example. So please refer to the service with which you are using Triton Inference Server for more details. +{{< /info >}} + +- **Internal access (within ArangoDB Platform)**: + `https://{SERVICE_ID}.{KUBERNETES_NAMESPACE}.svc:8000` + - `KUBERNETES_NAMESPACE` is available as an environment variable. + - `SERVICE_ID` is returned by the GenAI service API. -Therefore, Triton service http endpoint can be accessed from inside the ArangoDB platform as follows: `https://{SERVICE_ID}.{KUBERNETES_NAMESPACE}.svc:8000`, -where KUBERNETES_NAMESPACE is the namespace of the ArangoDB platform and you can find it in an environment -variable called `KUBERNETES_NAMESPACE`. And SERVICE_ID is the ID of the LLM Host Triton service, which can be found in the `gen-ai service` response. For example, to check the server health, you need to send a GET request to `https://{SERVICE_ID}.{KUBERNETES_NAMESPACE}.svc:8000/v2/health/ready`. + **Example**: + To check server health: + `GET https://{SERVICE_ID}.{KUBERNETES_NAMESPACE}.svc:8000/v2/health/ready` -Similarly, you can access gRPC endpoints on port 8001, please refer to the official Triton documentation below for more details. +- **External access (outside ArangoDB Platform)**: + `https://{BASE_URL}:8529/llm/{SERVICE_POSTFIX}/` + - `BASE_URL`: Your ArangoDB Platform base URL. + - `SERVICE_POSTFIX`: Last 5 characters of the service ID. -From outside the ArangoDB platform, you can access the Triton Inference Server http endpoints using the following URL: `https://{BASE_URL}:8529/llm/{SERVICE_POSTFIX}/`, where BASE_URL is the base URL of the ArangoDB platform and service_postfix is the postfix of the LLM Host Triton service, it is the last 5 characters of the service ID. -For example, to check the server health from outside the platform, send a GET request to `https://{BASE_URL}:8529/llm/{SERVICE_POSTFIX}/v2/health/ready`. + **Example**: + To check server health: + `GET https://{BASE_URL}:8529/llm/{SERVICE_POSTFIX}/v2/health/ready` -## Triton Inference Server Endpoints +{{< info >}} +Only HTTP protocol is supported externally (from outside the ArangoDB Platform). For gRPC, use internal endpoints. This includes the following endpoints: model inference, model management, model status, and health check. +{{< /info >}} -The service exposes all standard Triton Inference Server endpoints at port 8000 for http protocol or port 8001 for gRPC protocol for internal uage inside ArangoDB platform, and only http protocol is supported from outside the ArangoDB platform. This includes the following endpoints: model inference, model management, model status, and health check. +## Triton Inference Server API -For complete documentation on available endpoints and their usage, refer to the [Triton Inference Server HTTP API documentation](https://docs.nvidia.com/deeplearning/triton-inference-server/archives/triton_inference_server_1120/triton-inference-server-guide/docs/http_grpc_api.html#section-api-health). \ No newline at end of file +For complete documentation on available endpoints and their usage, refer to the [Triton Inference Server HTTP API](https://docs.nvidia.com/deeplearning/triton-inference-server/archives/triton_inference_server_1120/triton-inference-server-guide/docs/http_grpc_api.html#section-api-health) documentation. \ No newline at end of file From dbd2d0d4ddb2715c331f961257581d3ac149a9d9 Mon Sep 17 00:00:00 2001 From: Paula Date: Tue, 15 Jul 2025 12:39:56 +0200 Subject: [PATCH 19/48] add info about private and public llms --- .../3.13/data-science/graphrag/_index.md | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/site/content/3.13/data-science/graphrag/_index.md b/site/content/3.13/data-science/graphrag/_index.md index 9f032428a4..c040f8153c 100644 --- a/site/content/3.13/data-science/graphrag/_index.md +++ b/site/content/3.13/data-science/graphrag/_index.md @@ -59,15 +59,15 @@ the following tasks: ## How GraphRAG works ArangoDB's GraphRAG solution democratizes the creation and usage of knowledge -graphs with a unique combination of vector search, graphs, and LLMs in a -single product. +graphs with a unique combination of vector search, graphs, and LLMs (private or public) +in a single product. The overall process of GraphRAG involves: - **Creating a Knowledge Graph** from raw text data. - **Identifying and extract entities, relationships, and their connections** within the data. - **Storing the structured information** in ArangoDB. - **Using this structured representation** as the foundation for efficient and accurate information retrieval. -- **Integrating retrieval methods with LLMs** to augment responses using both structured and unstructured data. +- **Integrating retrieval methods with LLMs (private or public)** to augment responses using both structured and unstructured data. - **Enhancing the reliability and depth** of responses by combining these approaches. GraphRAG is particularly valuable for: @@ -138,3 +138,24 @@ Local retrieval is a more focused approach for: Local retrieval can answer questions like _**What is the relationship between entity X and entity Y**_? This query focuses only on the subgraph involving entities X and Y, extracting detailed relationships and context. + +### Private LLMs + +If you're working in an air-gapped environment or need to keep your data +private, you can use the private LLM mode with +[Triton Inference Server](./services/triton-inference-server.md). + +This option allows you to run the service completely within your own +infrastructure. The Triton Inference Server is a crucial component when +running in private LLM mode. It serves as the backbone for running your +language (LLM) and embedding models on your own machines, ensuring your +data never leaves your infrastructure. The server handles all the complex +model operations, from processing text to generating embeddings, and provides +both HTTP and gRPC interfaces for communication. + +### Public LLMs + +Alternatively, if you prefer a simpler setup and don't have specific privacy +requirements, you can use the public LLM mode. This option connects to cloud-based +services like OpenAI's models via the OpenAI API or a large array of models +(Gemini, Anthropic, publicly hosted open-source models, etc.) via the OpenRouter option. \ No newline at end of file From 362acb692fd56583e5111d0e1e1d5680e75544bb Mon Sep 17 00:00:00 2001 From: Paula Date: Wed, 16 Jul 2025 13:52:43 +0200 Subject: [PATCH 20/48] add initial graphrag notebook tutorial draft --- .../graphrag/tutorial-notebook.md | 414 ++++++++++++++++++ 1 file changed, 414 insertions(+) create mode 100644 site/content/3.13/data-science/graphrag/tutorial-notebook.md diff --git a/site/content/3.13/data-science/graphrag/tutorial-notebook.md b/site/content/3.13/data-science/graphrag/tutorial-notebook.md new file mode 100644 index 0000000000..97fa7f8dde --- /dev/null +++ b/site/content/3.13/data-science/graphrag/tutorial-notebook.md @@ -0,0 +1,414 @@ +--- +title: GraphRAG Notebook Tutorial +menuTitle: Notebook Tutorial +description: >- + Building a GraphRAG pipeline using ArangoDB's integrated notebook servers +weight: 15 +--- + +{{< tag "ArangoDB Platform" >}} + +## Tutorial overview + +This tutorial guides you through the process of building a +Graph-based Retrieval Augmented Generation (GraphRAG) pipeline using +ArangoDB's integrated Notebook servers. GraphRAG is an advanced framework that +combines the power of knowledge graphs (KGs) and large language models (LLMs) +to provide precise and contextually relevant responses from unstructured text data. + +You will learn how to: +- Prepare your raw text data (PDFs in this case) into a structured format + suitable for Knowledge Graph extraction using Docling. +- Utilize the ArangoDB RagLoader service to automatically extract + entities and relationships from your prepared text and store them as a + Knowledge Graph in ArangoDB. +- Query your newly created Knowledge Graph using the ArangoDB RagRetriever + service for both broad (global) and targeted (local) information retrieval. +- Set up a simple Gradio interface to interact with your GraphRAG pipeline. + +## Prerequisites + +Before you begin, ensure you have the following: +- **ArangoDB deployment:** Access to an ArangoDB deployment where you can + create and manage databases. You need the endpoint, your username and password, and + write access to your chosen database. +- **Python environment:** A Python 3.x environment with `pip` installed. +- **Jupyter Notebook:** This tutorial is designed to be run in ArangoDB's integrated + Notebook servers. +- **OpenAI API key (optional):** If you plan to use OpenAI's models for LLM + processing, you need an OpenAI API key. Alternatively, you can configure the + services to use other providers like Ollama. + +## Environment setup + +This section covers installing necessary libraries, importing Python modules, +and setting up the network functions for interacting with ArangoDB services. + +### Install required libraries + +First, install all the Python libraries necessary for PDF parsing, Markdown +conversion, and interacting with the ArangoDB GraphRAG services. + +```py +! pip install fitz +! pip install PyMuPDF +! pip install PyPDF2 +! pip install markdownify +! pip install docling==2.26.0 +! pip install gradio +``` + +### Import required Python libraries + +Next, import the specific modules and functions used throughout the tutorial. + +```py +import fitz +import requests +import base64 +import os +import re +from PyPDF2 import PdfReader +from docling.document_converter import DocumentConverter +from markdownify import markdownify as md +from typing import Dict, Optional +from pprint import pprint +import time +``` + +### Authentication + + + +## Step 1: Prepare your document + +{{< warning >}} +GraphRAG currently supports `.txt` and `.md` formats only. You can only import one +file at a time. If your document is in `.pdf` format, you must convert it into a +structured Markdown format using Docling. +{{< /warning >}} + +[Docling](https://docling-project.github.io/docling/) from IBM is an AI-based PDF +parsing tool designed to convert complex PDFs into Markdown. This conversion is +crucial for efficient extraction of entities and relationships in the next stage. + +The following process creates a Markdown file for you (e.g., `AliceInWonderland_docling.md`) +from your PDF. The file is automatically added in the file browser of the Jupyter +notebook interface. + +```py +# --- Configuration for your document and database --- +DB_NAME = "documentation" # Set the name of the ArangoDB database you will use for your knowledge graph. Ensure this database already exists in your ArangoDB Deployment. +FILE_NAME = "AliceInWonderland" # Specify the base name of your input file (e.g., 'AliceInWonderland' for 'AliceInWonderland.pdf'). +PDF_NAME=f"./{FILE_NAME}.pdf" # Update the file path and extension if your input document is not a PDF or has a different name. +# ---------------------------------------------------- + +%%time + +def pdf_to_markdown_docling(pdf_file): + """Converts a PDF file to Markdown using Docling.""" + converter = DocumentConverter() + result = converter.convert(pdf_file) + output_md_file = pdf_file.replace(".pdf", "_docling.md") + with open(output_md_file, "w", encoding="utf-8") as md_file: + md_file.write(result.document.export_to_markdown()) + print(f"Successfully converted {pdf_file} to {output_md_file}") + +try: + pdf_to_markdown_docling(PDF_NAME) +except Exception as e: + print(f"An error occurred during PDF to Markdown conversion: {e}") +``` + +The next step is to encode the content of the Markdown file into Base64, +which is required for the RagLoader service. + +```py +%%time + +def encode_file_content(file_path: str) -> Optional[str]: + """Encodes the file content to Base64.""" + try: + with open(file_path, "rb") as file: + encoded_content = base64.b64encode(file.read()).decode("utf-8") + print(f"Successfully encoded file: {file_path}") + return encoded_content + except FileNotFoundError: + print(f"File not found: {file_path}") + except Exception as e: + print(f"Error reading file {file_path}: {e}") + return None + +file_content = encode_file_content(f"./{FILE_NAME}_docling.md") +``` + +## Step 2: Import your document to generate the Knowledge Graph + +Once your document is prepared, you can start the RagLoader service. This +service takes your processed Markdown content, extracts entities and relationships, +and then stores this structured information as a Knowledge Graph within +your specified ArangoDB database. + +### Start the RagLoader (Importer) service + +Start the RagLoader importer service providing the necessary configuration +parameters. + +```py +%%time + +# Start the GraphRAG Importer service +importer_config = { + "db_name": DB_NAME, + "username": os.environ["USERNAME"], + "password": os.environ["PASSWORD"], + "api_provider": "openai", # Switch the provider if needed (e.g., 'ollama' or 'openai') + "openai_api_key": os.environ["OPENAI_API_KEY"], # Required if api_provider is 'openai' +} + +response = start_service("arangodb-graphrag-importer", importer_config) +pprint(response) + +# Extract the service ID for future reference +importer_service_id = response["serviceInfo"]["serviceId"].split("-")[-1] +print(f"Importer Service ID: {importer_service_id}") +``` + +### Submit your document + +With the importer service running, submit your Base64 encoded Markdown file. +The service will process it in the background to build the Knowledge Graph. + +{{< info >}} +This process can take some time depending on the document's size and complexity. +{{< /info >}} + +```py +%%time + +# Submit the prepared file to generate the Knowledge Graph +importer_payload = { + "file_name": FILE_NAME, + "file_content": file_content, +} + +importerResponse = send_request(f"/graphrag/importer/{importer_service_id}/v1/import", importer_payload, "POST") +pprint(importerResponse) +``` + +### Visualize and interact with the Knowledge Graph + +Once the importer service has processed the document, you can visualize and +interact with the generated Knowledge Graph using the [Graph Visualizer](../../graphs/graph-visualizer.md) +directly from the ArangoDB Platform web interface. + +1. In the ArangoDB Platform web interface, select the database you have previously used. +2. Click **Graphs** in the main navigation. +3. Select the graph named **Knowledge Graph** from the list. +4. The viewport of the Graph Visualizer opens for exploring the graph. +5. In the AQL editor, use the following query to explore communities and + entities: + ```aql + FOR c IN Communities + FILTER c._key == "0" + FOR v,e,p IN 1 INBOUND c GRAPH "KnowledgeGraph" + RETURN p + ``` + +You can also configure the display options: +- Set all **Nodes** collections (e.g., Communities, Entities) to a different color. +- Set the **Communities** label to `title`. +- Set the **Entities** label to `entity_name`. +- For **Edges** (relations), set the label to `type`. + +## Step 3: Query the Knowledge Graph with the RagRetriever service + +To retrieve information from the Knowledge Graph, you need to deploy the +GraphRAG Retriever service. This service interacts with your Knowledge Graph +and uses an LLM to formulate answers to your queries. + +### Startup parameters + +- `api_provider`: Defines to which LLM provider you want to connect (e.g., `ollama`, `openai`). + `ollama` is intended for private LLM usage. +- `openai_api_key`: An API key for usage with ChatGPT. This is only required when + `openai` is selected as the provider. +- `db_name`: The name of the database where your Knowledge Graph was created. +- `username`: The ArangoDB username. This user needs to have write access to the specified database. +- `password`: The password for the specified ArangoDB user. + +### Start the RagRetriever service + +```py +%%time + +# Start the GraphRAG Retriever service +retriever_config = { + "db_name": DB_NAME, + "username": os.environ["USERNAME"], + "password": os.environ["PASSWORD"], + "api_provider": "openai", # Change this provider if needed + "openai_api_key": os.environ["OPENAI_API_KEY"], +} + +response = start_service("arangodb-graphrag-retriever", retriever_config) +pprint(response) + +# Extract the service ID for future reference +retriever_service_id = response["serviceInfo"]["serviceId"].split("-")[-1] +print(f"Retriever Service ID: {retriever_service_id}") +``` + +The RagRetriever service is available at the following endpoint, which allows you +to send queries to the Knowledge Graph: +``` +/graphrag/retriever/{service_id}/v1/graphrag-query +``` + +### Query parameters + +The `POST /v1/graphrag-query` API expects the following parameters: + +- `query`: The question you want to ask. +- `query_type`: Can be `1` for a global search (information from the entire KG) + or `2` for a local search (focused on specific subgraphs). +- `level`: Recommended value is `1`. This parameter is relevant for global searches + and defines the hierarchy level of community grouping to start from. +- `provider`: Must be `0` for public LLMs like OpenAI. Use `1` for private LLMs. + +### Example: Global search + +Global retrieval focuses on extracting information from the entire Knowledge Graph. +It is designed to provide a comprehensive overview and answer queries that span +across multiple entities and relationships in the graph. + +For example, you can ask a broad question about the main themes of the document: + +```py +%%time + +# Example for a Global Query +global_query_body = { + "query": "What are the main themes or topics covered in the document?", + "query_type": 1, # 1 = Global search + "level": 1, + "provider": 0, # 0 = OPENAI (based on our setup) + "response_type": "use_query_decomp=True use_llm_planner=True Detailed summary" +} + +print("Executing Global Query...") +retrieverResponse = send_request( + f"/graphrag/retriever/{retriever_service_id}/v1/graphrag-query", + global_query_body, + "POST" +) + +pprint(retrieverResponse["result"]) +``` + +### Example: Local search + +Local retrieval is a focused approach where the query is constrained to +specific subgraphs within the Knowledge Graphs. It is designed for targeted +and precise information extraction. + +For example, you can ask a detailed question about entities within the +Knowledge Graph: + +```py +%%time + +# Example for a Local Query +local_query_body = { + "query": "Who are Alice's relatives?", + "query_type": 2, # 2 = Local search + "level": 1, + "provider": 0, # 0 = OPENAI (based on our setup) + "response_type": "use_query_decomp=True use_llm_planner=True Concise list" +} + +print("Executing Local Query...") +retrieverResponse = send_request( + f"/graphrag/retriever/{retriever_service_id}/v1/graphrag-query", + local_query_body, + "POST" +) + +pprint(retrieverResponse["result"]) +``` + +## Step 4: Create a chat interface via Gradio + +To make querying your Knowledge Graph more interactive, you can use Gradio to +create a simple chat interface. This allows you to submit queries and see real-time +responses from the RagRetriever. + +First, define the functions that handle the queries through the Gradio interface: + +```py +import time + +def global_query(query, messages): + yield from query_graph(query, 1) + +def local_query(query, messages): + yield from query_graph(query, 2) + +def query_graph(query, query_type): + body = { + "query": query, + "query_type": query_type, + "level": 1, + "provider": 0 + } + + retrieverResponse = send_request(f"/graphrag/retriever/{retriever_service_id}/v1/graphrag-query", body, "POST") + result = retrieverResponse["result"] + + response = "" + i = 0 + + while i < len(result): + current_char = result[i] + + # Handle escaped characters + if current_char == '\\': + if i + 1 < len(result): + next_char = result[i + 1] + if next_char == 'n': + response += '\n' + i += 2 + continue + + response += current_char + i += 1 + + yield response + + time.sleep(0.005) +``` +Then, you can launch the global retriever and the local retriever interfaces: + +```py +import gradio as gr + +gr.ChatInterface( + title="ArangoDB GraphRAG Global Retriever", + fn=global_query, + chatbot=gr.Chatbot(height=1000, type="messages"), + type="messages", + theme='JohnSmith9982/small_and_pretty' +).launch(share=True) +``` + +```py +import gradio as gr + +gr.ChatInterface( + title="ArangoDB GraphRAG Local Retriever", + fn=local_query, + chatbot=gr.Chatbot(height=1000, type="messages"), + type="messages", + theme='JohnSmith9982/small_and_pretty' +).launch(share=True) +``` \ No newline at end of file From 394b5074e31424a15bb0e6a6f45d4699598229e0 Mon Sep 17 00:00:00 2001 From: Paula Date: Wed, 16 Jul 2025 15:10:34 +0200 Subject: [PATCH 21/48] add links and examples to notebook servers page --- .../3.13/data-science/notebook-servers.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/site/content/3.13/data-science/notebook-servers.md b/site/content/3.13/data-science/notebook-servers.md index 553f77d081..c48c2a1af7 100644 --- a/site/content/3.13/data-science/notebook-servers.md +++ b/site/content/3.13/data-science/notebook-servers.md @@ -19,16 +19,14 @@ infrastructure, and can immediately start using the GraphML and GenAI functionalities. The notebooks are primarily focused on the following solutions: -- **GraphRAG**: A complete solution for extracting entities +- [GraphRAG](./graphrag/_index.md): A complete solution for extracting entities from text files to create a knowledge graph that you can then query with a natural language interface. -- **GraphML**: Apply machine learning to graphs for link prediction, +- [GraphML](./graphml/_index.md): Apply machine learning to graphs for link prediction, classification, and similar tasks. -- **Integrations** : Use ArangoDB together with cuGraph, NetworkX, and other +- [Integrations](./integrations/_index.md): Use ArangoDB together with cuGraph, NetworkX, and other data science tools. - - The ArangoDB Notebooks include the following: - Automatically connect to ArangoDB databases and GenAI platform services - [Magic commands](../arangograph/notebooks.md#arangograph-magic-commands) @@ -44,9 +42,11 @@ The ArangoDB Notebooks include the following: 3. After your notebook service has been deployed, you can click the ID to start interacting with the Jupyter interface. -{{< tip >}} -To get a better understanding of how to interact with ArangoDB using notebooks, -open the `GettingStarted.ipynb` notebook from the file browser to learn the basics. -{{< /tip >}} +## Examples - +- To get a better understanding of how to interact with ArangoDB using notebooks, +open the `GettingStarted.ipynb` notebook from the file browser to learn the basics. +- To get started with GraphRAG using ArangoDB's integrated notebook servers, see + the [GraphRAG Notebook Tutorial](./graphrag/tutorial-notebook.md). +- To get started with GraphML using ArangoDB's integrated notebook servers, see + the [GraphML Notebooks and API](./graphml/notebooks-api.md) documentation. From 835be8583f7426d365a4d29a15f6e95899cbb11c Mon Sep 17 00:00:00 2001 From: Paula Date: Wed, 16 Jul 2025 17:22:19 +0200 Subject: [PATCH 22/48] update triton page --- .../services/triton-inference-server.md | 93 ++++++++++++++----- 1 file changed, 68 insertions(+), 25 deletions(-) diff --git a/site/content/3.13/data-science/graphrag/services/triton-inference-server.md b/site/content/3.13/data-science/graphrag/services/triton-inference-server.md index a49ceacff0..e0a4eb5f3c 100644 --- a/site/content/3.13/data-science/graphrag/services/triton-inference-server.md +++ b/site/content/3.13/data-science/graphrag/services/triton-inference-server.md @@ -1,24 +1,43 @@ --- -title: Triton Inference Server -menuTitle: Triton Inference Server +title: Triton LLM Host +menuTitle: Triton LLM Host description: >- - Private LLM using the Triton Inference Server + Enable your GraphRAG pipeline to use private LLMs via Triton Inference Server weight: 30 --- -## Overview +The **Triton LLM Host** service provides scalable deployment of Large Language +Models (LLMs) using the NVIDIA Triton Inference Server. It efficiently serves +machine learning models with support for HTTP and gRPC APIs, customizable routing, +and seamless Kubernetes integration. -The **LLM Host Triton** service provides scalable deployment of Large Language Models (LLMs) using the NVIDIA Triton Inference Server. It enables an efficient serving of machine learning models with support for HTTP and gRPC APIs, customizable routing, and seamless Kubernetes integration. +## Workflow + +The Triton LLM Host enables your GraphRAG pipeline to use privately hosted +LLMs directly from the ArangoDB Platform environment. The process involves the +following steps: + +1. Install the Triton LLM Host service. +2. Register your LLM model to MLflow by uploading the required files. +3. Configure the [RagLoader](rag-loader.md#using-triton-inference-server-private-llm) service to use your LLM model. +4. Configure the [RagRetriever](rag-retriever.md#using-triton-inference-server-private-llm) service to use your LLM model. + +{{< tip >}} +Check out the dedicated [ArangoDB MLflow](mlflow.md) documentation page to learn +more about the service and how to interact with it. +{{< /tip >}} ## Deployment -The service is deployed as a **Kubernetes application** using Helm charts in the ArangoDB Platform ecosystem. It integrates with: -- MLFlow model registry for model management -- Storage sidecar for artifact storage +The Triton LLM Host service is deployed as a **Kubernetes application** using Helm charts in +the ArangoDB Platform ecosystem. It integrates with the: +- MLFlow model registry for model management. +- Storage sidecar for artifact storage. ## Installation via GenAI Service API -To install the LLM Host Triton service, send an API request to the **GenAI service** with the following parameters: +To install the Triton LLM Host service, send an API request to the +**GenAI service** using the following parameters: ### Required parameters @@ -27,7 +46,7 @@ To install the LLM Host Triton service, send an API request to the **GenAI servi "models": "model_name", } ``` -You can also pass multiple models: +You can also specify multiple models: - Without versions: `"model_name_1, model_name_2"` - With versions: `"model_name_1@version1, model_name_2@version2"` - Mixed: `"model_name_1, model_name_2@version4"` @@ -63,10 +82,12 @@ You can also pass multiple models: ### Python Backend -All models **must use the Python backend** for compatibility with the Triton service. Each model requires two files: +All models **must use the Python backend** to ensure compatibility with the +Triton service. Each model requires the following two files: 1. **`model.py`** - Implements the Python backend: + Implements the Python backend model. Triton uses this file to load and + execute your model for inference. ```python class TritonPythonModel: def initialize(self, args): @@ -83,7 +104,8 @@ All models **must use the Python backend** for compatibility with the Triton ser ``` 2. **`config.pbtxt`** - Triton model configuration file: + This is the Triton model configuration file that defines essential parameters + such as the model name, backend, and input/output tensors. ``` name: "your_model_name" backend: "python" @@ -92,16 +114,32 @@ All models **must use the Python backend** for compatibility with the Triton ser output: [...] ``` -## Uploading a model using MLFLow - - +## Model management with MLflow -## Model storage - -**All models must be registered in MLFlow.** -The service will automatically download and load models from the MLFlow registry. +{{< info >}} +To prepare your Python backend model for the Triton LLM Host, you must first +register it in MLflow. The Triton LLM Host service automatically downloads +and load models from the MLflow registry. +{{< /info >}} - +### How to register a model in MLflow + +Registering a Python backend model in MLflow involves packaging your +`model.py` and `config.pbtxt` files and passing them as an artifact. The Triton +service will look for a directory named after your model (e.g., `my-private-llm-model`) +within the MLflow registry store and expects to find the `model.py` and `config.pbtxt` +files inside it. + +```py +try: + mlflow.set_tracking_uri(MLFLOW_SERVICE_URI) + with mlflow.start_run() as run: + run_id = run.info.run_id + model_uri = f"runs:/{run_id}/model" + mlflow.register_model(model_uri=model_uri, name=model_name) + # Log the entire model directory as an artifact, preserving the Triton structure + mlflow.log_artifact(local_path=str(local_model_dir)) +``` ## Service endpoints @@ -114,8 +152,10 @@ Once deployed, the service exposes two endpoints: {{< info >}} -Triton Inference Server is not intended to be used in a standalone mode, but rather through other services -consuming these endpoints to send infer requests for example. So please refer to the service with which you are using Triton Inference Server for more details. +The Triton Inference Server is not intended to be used in a standalone mode. +Instead, other services consume these endpoints to send inference +requests for example. Refer to the specific service with which you are using +Triton Inference Server for more details. {{< /info >}} - **Internal access (within ArangoDB Platform)**: @@ -137,9 +177,12 @@ consuming these endpoints to send infer requests for example. So please refer to `GET https://{BASE_URL}:8529/llm/{SERVICE_POSTFIX}/v2/health/ready` {{< info >}} -Only HTTP protocol is supported externally (from outside the ArangoDB Platform). For gRPC, use internal endpoints. This includes the following endpoints: model inference, model management, model status, and health check. +Only HTTP protocol is supported for external access (outside the ArangoDB +Platform). For gRPC, use internal endpoints. This limitation applies to model +inference, model management, model status, and health check endpoints. {{< /info >}} ## Triton Inference Server API -For complete documentation on available endpoints and their usage, refer to the [Triton Inference Server HTTP API](https://docs.nvidia.com/deeplearning/triton-inference-server/archives/triton_inference_server_1120/triton-inference-server-guide/docs/http_grpc_api.html#section-api-health) documentation. \ No newline at end of file +For complete documentation on available endpoints and their usage, +refer to the [Triton Inference Server HTTP API](https://docs.nvidia.com/deeplearning/triton-inference-server/archives/triton_inference_server_1120/triton-inference-server-guide/docs/http_grpc_api.htm) documentation. \ No newline at end of file From 1e6486a8f05de26e118216b2a23d1d129d72d104 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 17 Jul 2025 09:07:31 +0200 Subject: [PATCH 23/48] Fix merge issue with AG notebooks --- .../data-science/arangograph-notebooks.md | 22 ------------------- 1 file changed, 22 deletions(-) delete mode 100644 site/content/3.13/data-science/arangograph-notebooks.md diff --git a/site/content/3.13/data-science/arangograph-notebooks.md b/site/content/3.13/data-science/arangograph-notebooks.md deleted file mode 100644 index d6b2a94930..0000000000 --- a/site/content/3.13/data-science/arangograph-notebooks.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: ArangoGraph Notebooks -menuTitle: ArangoGraph Notebooks -weight: 40 -description: >- - Colocated Jupyter Notebooks within the ArangoGraph Insights Platform ---- -{{< tip >}} -ArangoGraph Notebooks don't include the ArangoGraphML services. -To enable the ArangoGraphML services, -[get in touch](https://www.arangodb.com/contact/) -with the ArangoDB team. -{{< /tip >}} - -The ArangoGraph Notebook is a JupyterLab notebook embedded in the -[ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic). -The notebook integrates seamlessly with the platform, -automatically connecting to ArangoGraph services and ArangoDB. -This makes it much easier to leverage these resources without having -to download any data locally or to remember user IDs, passwords, and endpoint URLs. - -For more information, see the [Notebooks](../arangograph/notebooks.md) documentation. From 4e4eaea33d7a021c4b082a153a76508b19324827 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 17 Jul 2025 10:26:36 +0200 Subject: [PATCH 24/48] Add Platform feature list --- .../3.13/about-arangodb/features/_index.md | 4 ++ .../3.13/about-arangodb/features/platform.md | 56 +++++++++++++++++++ site/content/3.13/components/platform.md | 27 +++++---- 3 files changed, 76 insertions(+), 11 deletions(-) create mode 100644 site/content/3.13/about-arangodb/features/platform.md diff --git a/site/content/3.13/about-arangodb/features/_index.md b/site/content/3.13/about-arangodb/features/_index.md index a2db52724b..b1b00f00c5 100644 --- a/site/content/3.13/about-arangodb/features/_index.md +++ b/site/content/3.13/about-arangodb/features/_index.md @@ -21,6 +21,10 @@ aliases: See the full [Feature list of the ArangoDB core database system](core.md). +For a scalable architecture based on Kubernetes that supports the full offering +of ArangoDB including graph-powered machine learning and GenAI features, see +the [Feature list of the ArangoDB Platform](platform.md). + ## On-premises versus Cloud ### Fully managed cloud service diff --git a/site/content/3.13/about-arangodb/features/platform.md b/site/content/3.13/about-arangodb/features/platform.md new file mode 100644 index 0000000000..75835207b3 --- /dev/null +++ b/site/content/3.13/about-arangodb/features/platform.md @@ -0,0 +1,56 @@ +--- +title: Feature list of the ArangoDB Platform +menuTitle: Platform +weight: 10 +description: >- + The ArangoDB Platform is a scalable architecture that gets you all features + of ArangoDB including graph-powered machine learning and GenAI as a single + solution with a unified interface +--- +For in-depth information about the ArangoDB Platform as a whole and how to +deploy and use it, see [The ArangoDB Platform](../../components/platform.md). + +## Architecture + +- **Core Database**: The ArangoDB database system forms the solid core + of the ArangoDB Platform. + +- **Kubernetes**: An open-source container orchestration system for automating + software deployment, scaling, and management designed by Google. + +- **Helm**: A package manager for Kubernetes that enables consistent, repeatable + installations and version control. + +- **Envoy**: A high-performance service proxy that acts as the gateway for the + ArangoDB Platform for centralizing authentication and routing. + +- **Web interface**: The Platform includes a unified, browser-based UI that lets + you access its features in an intuitive way. Optional products like the + GenAI Suite seamlessly integrate into the UI if installed. + +## Included features + +- [**ArangoDB Core**](core.md): The ArangoDB database system with support for + graphs, documents, key-value, full-text search, and vector search. + +- [**Graph Analytics**](../../graphs/graph-analytics.md): + A service that can efficiently load graph data from the core database system + and run graph algorithms such as PageRank. + +- [**Notebook servers**](../../data-science/notebook-servers.md): + Run Jupyter kernels in the Platform for hosting interactive, Python-based + notebooks to experiment and develop applications. + +- [**MLflow integration**](../../data-science/graphrag/services/mlflow.md): + Use the popular MLflow for machine learning practitioners as part of the + ArangoDB Platform. + +## Additional products + +- [**Graph visualizer**](../../graphs/graph-visualizer.md): + A web-based tool for exploring your graph data with an intuitive interface and + sophisticated querying capabilities. + +- [**GenAI Suite**](../../data-science/_index.md): + ArangoDB's GraphML and GraphRAG solutions for graph-powered machine learning + and GenAI applications. diff --git a/site/content/3.13/components/platform.md b/site/content/3.13/components/platform.md index 121a67efe1..5162c3a936 100644 --- a/site/content/3.13/components/platform.md +++ b/site/content/3.13/components/platform.md @@ -18,6 +18,8 @@ to access all of the platform features. - **Kubernetes**: Orchestrates the selected services that comprise the ArangoDB Platform, running them in containers for safety and scalability. +- **Helm**: A package manager for Kubernetes. It is used to install Platform + services with the correct versions. - **Licenses**: If you want to use any paid features, you need to purchase the respective packages. @@ -28,12 +30,9 @@ to access all of the platform features. Enterprise Edition. - **Graph visualizer**: A web-based tool for exploring your graph data with an intuitive interface and sophisticated querying capabilities. -- **Data-science suite**: A set of paid machine learning services, APIs, and +- **GenAI Suite**: A set of paid machine learning services, APIs, and user interfaces that are available as a package as well as individual products. - - **Vector embeddings**: You can train machine learning models for later use - in vector search in conjunction with the core database system's `vector` - index type. It allows you to find similar items in your dataset. - - **GraphRAG solutions**: Leverage ArangoDB's Graph, Document, Key-Value, + - **GraphRAG**: Leverage ArangoDB's Graph, Document, Key-Value, Full-Text Search, and Vector Search features to streamline knowledge extraction and retrieval. - **Txt2AQL**: Unlock natural language querying with a service that converts @@ -47,15 +46,21 @@ to access all of the platform features. - **GraphML**: A turnkey solution for graph machine learning for prediction use cases such as fraud detection, supply chain, healthcare, retail, and cyber security. - - **Graph Analytics**: A suite of graph algorithms including PageRank, - community detection, and centrality measures with support for GPU - acceleration thanks to Nvidia cuGraph. - - **Jupyter notebooks**: Run a Jupyter kernel in the platform for hosting - interactive notebooks for experimentation and development of applications - that use ArangoDB as their backend. +## Additional features of the ArangoDB Platform + +- **Vector embeddings**: You can train machine learning models for later use + in vector search in conjunction with the core database system's `vector` + index type. It allows you to find similar items in your dataset. +- **Graph Analytics**: A suite of graph algorithms including PageRank, + community detection, and centrality measures with support for GPU + acceleration thanks to Nvidia cuGraph. +- **Jupyter notebooks**: Run a Jupyter kernel in the platform for hosting + interactive notebooks for experimentation and development of applications + that use ArangoDB as their backend. + ## Get started with the ArangoDB Platform ### Use the ArangoDB Platform as a managed service From 18ce8767d3ef0d9b3a3298919c9af20240134aa6 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 17 Jul 2025 10:46:07 +0200 Subject: [PATCH 25/48] Formatting --- site/content/3.13/data-science/notebook-servers.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/site/content/3.13/data-science/notebook-servers.md b/site/content/3.13/data-science/notebook-servers.md index c48c2a1af7..f93dfb0892 100644 --- a/site/content/3.13/data-science/notebook-servers.md +++ b/site/content/3.13/data-science/notebook-servers.md @@ -19,13 +19,13 @@ infrastructure, and can immediately start using the GraphML and GenAI functionalities. The notebooks are primarily focused on the following solutions: -- [GraphRAG](./graphrag/_index.md): A complete solution for extracting entities +- [GraphRAG](graphrag/_index.md): A complete solution for extracting entities from text files to create a knowledge graph that you can then query with a natural language interface. -- [GraphML](./graphml/_index.md): Apply machine learning to graphs for link prediction, +- [GraphML](graphml/_index.md): Apply machine learning to graphs for link prediction, classification, and similar tasks. -- [Integrations](./integrations/_index.md): Use ArangoDB together with cuGraph, NetworkX, and other - data science tools. +- [Integrations](integrations/_index.md): Use ArangoDB together with cuGraph, + NetworkX, and other data science tools. The ArangoDB Notebooks include the following: - Automatically connect to ArangoDB databases and GenAI platform services @@ -45,8 +45,8 @@ The ArangoDB Notebooks include the following: ## Examples - To get a better understanding of how to interact with ArangoDB using notebooks, -open the `GettingStarted.ipynb` notebook from the file browser to learn the basics. + open the `GettingStarted.ipynb` notebook from the file browser to learn the basics. - To get started with GraphRAG using ArangoDB's integrated notebook servers, see - the [GraphRAG Notebook Tutorial](./graphrag/tutorial-notebook.md). + the [GraphRAG Notebook Tutorial](graphrag/tutorial-notebook.md). - To get started with GraphML using ArangoDB's integrated notebook servers, see - the [GraphML Notebooks and API](./graphml/notebooks-api.md) documentation. + the [GraphML Notebooks and API](graphml/notebooks-api.md) documentation. From 61bcc34b0f8a8d3c3ec20738d9303cb8067d0e7d Mon Sep 17 00:00:00 2001 From: Paula Date: Thu, 17 Jul 2025 12:17:54 +0200 Subject: [PATCH 26/48] add platform tag --- site/content/3.13/data-science/_index.md | 3 +++ site/content/3.13/data-science/graphml/_index.md | 3 +++ site/content/3.13/data-science/graphml/quickstart.md | 2 ++ site/content/3.13/data-science/graphrag/_index.md | 2 ++ site/content/3.13/data-science/graphrag/services/gen-ai.md | 2 ++ site/content/3.13/data-science/graphrag/services/mlflow.md | 3 +++ site/content/3.13/data-science/graphrag/services/rag-loader.md | 3 +++ .../3.13/data-science/graphrag/services/rag-retriever.md | 3 +++ .../data-science/graphrag/services/triton-inference-server.md | 2 ++ site/content/3.13/data-science/graphrag/tutorial-notebook.md | 2 +- site/content/3.13/graphs/graph-visualizer.md | 3 +++ 11 files changed, 27 insertions(+), 1 deletion(-) diff --git a/site/content/3.13/data-science/_index.md b/site/content/3.13/data-science/_index.md index 569c0b7728..75071cacff 100644 --- a/site/content/3.13/data-science/_index.md +++ b/site/content/3.13/data-science/_index.md @@ -8,6 +8,9 @@ description: >- aliases: - data-science/overview --- + +{{< tag "ArangoDB Platform" >}} + ArangoDB provides a wide range of functionality that can be utilized for data science applications. The core database system includes multi-model storage of information with scalable graph and information retrieval capabilities that diff --git a/site/content/3.13/data-science/graphml/_index.md b/site/content/3.13/data-science/graphml/_index.md index 00c79ec1a0..641ba60bad 100644 --- a/site/content/3.13/data-science/graphml/_index.md +++ b/site/content/3.13/data-science/graphml/_index.md @@ -7,6 +7,9 @@ description: >- aliases: - arangographml --- + +{{< tag "ArangoDB Platform" >}} + Traditional Machine Learning (ML) overlooks the connections and relationships between data points, which is where graph machine learning excels. However, accessibility to GraphML has been limited to sizable enterprises equipped with diff --git a/site/content/3.13/data-science/graphml/quickstart.md b/site/content/3.13/data-science/graphml/quickstart.md index 97b9fabeb3..f06e0fb679 100644 --- a/site/content/3.13/data-science/graphml/quickstart.md +++ b/site/content/3.13/data-science/graphml/quickstart.md @@ -9,6 +9,8 @@ aliases: - ../arangographml/deploy --- +{{< tag "ArangoDB Platform" >}} + ## Web interface versus Jupyter Notebooks The ArangoDB Platform provides enterprise-ready Graph Machine Learning in two options, diff --git a/site/content/3.13/data-science/graphrag/_index.md b/site/content/3.13/data-science/graphrag/_index.md index c040f8153c..0ab4bfcab5 100644 --- a/site/content/3.13/data-science/graphrag/_index.md +++ b/site/content/3.13/data-science/graphrag/_index.md @@ -9,6 +9,8 @@ aliases: llm-knowledge-graphs --- +{{< tag "ArangoDB Platform" >}} + ## Introduction Large language models (LLMs) and knowledge graphs are two prominent and diff --git a/site/content/3.13/data-science/graphrag/services/gen-ai.md b/site/content/3.13/data-science/graphrag/services/gen-ai.md index 010bb33234..fa95b3e216 100644 --- a/site/content/3.13/data-science/graphrag/services/gen-ai.md +++ b/site/content/3.13/data-science/graphrag/services/gen-ai.md @@ -8,6 +8,8 @@ description: >- weight: 5 --- +{{< tag "ArangoDB Platform" >}} + The basic operations that the GenAI orchestration service carries out are the following: - Install a service - Uninstall a service diff --git a/site/content/3.13/data-science/graphrag/services/mlflow.md b/site/content/3.13/data-science/graphrag/services/mlflow.md index dc92752fb3..2cb16af117 100644 --- a/site/content/3.13/data-science/graphrag/services/mlflow.md +++ b/site/content/3.13/data-science/graphrag/services/mlflow.md @@ -6,6 +6,9 @@ description: >- full machine learning lifecycle into the ArangoDB Platform weight: 25 --- + +{{< tag "ArangoDB Platform" >}} + ## Overview The ArangoDB MLflow service is a service that hosts the official MLflow diff --git a/site/content/3.13/data-science/graphrag/services/rag-loader.md b/site/content/3.13/data-science/graphrag/services/rag-loader.md index c784c5363d..a63a0d3ebd 100644 --- a/site/content/3.13/data-science/graphrag/services/rag-loader.md +++ b/site/content/3.13/data-science/graphrag/services/rag-loader.md @@ -6,6 +6,9 @@ description: >- making it easier to analyze and understand complex information weight: 10 --- + +{{< tag "ArangoDB Platform" >}} + ## Overview The RagLoader service lets you turn text files into a knowledge graph. diff --git a/site/content/3.13/data-science/graphrag/services/rag-retriever.md b/site/content/3.13/data-science/graphrag/services/rag-retriever.md index dd98f043d3..b835831230 100644 --- a/site/content/3.13/data-science/graphrag/services/rag-retriever.md +++ b/site/content/3.13/data-science/graphrag/services/rag-retriever.md @@ -6,6 +6,9 @@ description: >- retrieval from knowledge graphs created by the RAGLoader weight: 15 --- + +{{< tag "ArangoDB Platform" >}} + ## Overview The RagRetriever service offers two distinct search methods: diff --git a/site/content/3.13/data-science/graphrag/services/triton-inference-server.md b/site/content/3.13/data-science/graphrag/services/triton-inference-server.md index e0a4eb5f3c..aed102ca8d 100644 --- a/site/content/3.13/data-science/graphrag/services/triton-inference-server.md +++ b/site/content/3.13/data-science/graphrag/services/triton-inference-server.md @@ -6,6 +6,8 @@ description: >- weight: 30 --- +{{< tag "ArangoDB Platform" >}} + The **Triton LLM Host** service provides scalable deployment of Large Language Models (LLMs) using the NVIDIA Triton Inference Server. It efficiently serves machine learning models with support for HTTP and gRPC APIs, customizable routing, diff --git a/site/content/3.13/data-science/graphrag/tutorial-notebook.md b/site/content/3.13/data-science/graphrag/tutorial-notebook.md index 97fa7f8dde..7beadea5f4 100644 --- a/site/content/3.13/data-science/graphrag/tutorial-notebook.md +++ b/site/content/3.13/data-science/graphrag/tutorial-notebook.md @@ -3,7 +3,7 @@ title: GraphRAG Notebook Tutorial menuTitle: Notebook Tutorial description: >- Building a GraphRAG pipeline using ArangoDB's integrated notebook servers -weight: 15 +weight: 5 --- {{< tag "ArangoDB Platform" >}} diff --git a/site/content/3.13/graphs/graph-visualizer.md b/site/content/3.13/graphs/graph-visualizer.md index e1a5bc8a88..5d84b8e292 100644 --- a/site/content/3.13/graphs/graph-visualizer.md +++ b/site/content/3.13/graphs/graph-visualizer.md @@ -5,6 +5,9 @@ weight: 102 description: >- Visually explore and interact with your ArangoDB graphs through an intuitive interface --- + +{{< tag "ArangoDB Platform" >}} + The **Graph Visualizer** is a browser-based tool integrated into the web interface of the ArangoDB Platform. It lets you explore the connections of your named graphs to visually understand the structure as well as to inspect and edit the attributes From 8739293e3cf9f1194d954be67f8be535d89943b6 Mon Sep 17 00:00:00 2001 From: Paula Date: Thu, 17 Jul 2025 12:28:54 +0200 Subject: [PATCH 27/48] remove password field from tutorial, fix typo --- .../3.13/data-science/graphrag/services/gen-ai.md | 3 +-- .../3.13/data-science/graphrag/tutorial-notebook.md | 9 +-------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/site/content/3.13/data-science/graphrag/services/gen-ai.md b/site/content/3.13/data-science/graphrag/services/gen-ai.md index fa95b3e216..fa5a3cf83e 100644 --- a/site/content/3.13/data-science/graphrag/services/gen-ai.md +++ b/site/content/3.13/data-science/graphrag/services/gen-ai.md @@ -4,7 +4,6 @@ menuTitle: GenAI description: >- The GenAI orchestrator service installs, manages, and runs AI-based services in your Kubernetes cluster -# TODO: Shouldn't this refer to the ArangoDB Platform instead? weight: 5 --- @@ -145,7 +144,7 @@ curl -X GET https://:8529/gen-ai/v1/service/arangodb-graphrag- } ``` -### Step 3: Uninstaling the service +### Step 3: Uninstalling the service ```bash curl -X DELETE https://:8529/gen-ai/v1/service/arangodb-graphrag-importer-of1ml \ diff --git a/site/content/3.13/data-science/graphrag/tutorial-notebook.md b/site/content/3.13/data-science/graphrag/tutorial-notebook.md index 7beadea5f4..412d7e7ef3 100644 --- a/site/content/3.13/data-science/graphrag/tutorial-notebook.md +++ b/site/content/3.13/data-science/graphrag/tutorial-notebook.md @@ -30,7 +30,7 @@ You will learn how to: Before you begin, ensure you have the following: - **ArangoDB deployment:** Access to an ArangoDB deployment where you can - create and manage databases. You need the endpoint, your username and password, and + create and manage databases. You need the endpoint, your username, and write access to your chosen database. - **Python environment:** A Python 3.x environment with `pip` installed. - **Jupyter Notebook:** This tutorial is designed to be run in ArangoDB's integrated @@ -76,10 +76,6 @@ from pprint import pprint import time ``` -### Authentication - - - ## Step 1: Prepare your document {{< warning >}} @@ -161,7 +157,6 @@ parameters. importer_config = { "db_name": DB_NAME, "username": os.environ["USERNAME"], - "password": os.environ["PASSWORD"], "api_provider": "openai", # Switch the provider if needed (e.g., 'ollama' or 'openai') "openai_api_key": os.environ["OPENAI_API_KEY"], # Required if api_provider is 'openai' } @@ -235,7 +230,6 @@ and uses an LLM to formulate answers to your queries. `openai` is selected as the provider. - `db_name`: The name of the database where your Knowledge Graph was created. - `username`: The ArangoDB username. This user needs to have write access to the specified database. -- `password`: The password for the specified ArangoDB user. ### Start the RagRetriever service @@ -246,7 +240,6 @@ and uses an LLM to formulate answers to your queries. retriever_config = { "db_name": DB_NAME, "username": os.environ["USERNAME"], - "password": os.environ["PASSWORD"], "api_provider": "openai", # Change this provider if needed "openai_api_key": os.environ["OPENAI_API_KEY"], } From e8166e90a0eca80a623ab04dfd2753755aca28b5 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 17 Jul 2025 12:42:58 +0200 Subject: [PATCH 28/48] Single feature list for prerelease --- .../3.13/about-arangodb/features/platform.md | 20 +++++----- site/content/3.13/components/platform.md | 38 +++++++++++-------- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/site/content/3.13/about-arangodb/features/platform.md b/site/content/3.13/about-arangodb/features/platform.md index 75835207b3..bdea671ffd 100644 --- a/site/content/3.13/about-arangodb/features/platform.md +++ b/site/content/3.13/about-arangodb/features/platform.md @@ -28,15 +28,23 @@ deploy and use it, see [The ArangoDB Platform](../../components/platform.md). you access its features in an intuitive way. Optional products like the GenAI Suite seamlessly integrate into the UI if installed. -## Included features +## Features - [**ArangoDB Core**](core.md): The ArangoDB database system with support for graphs, documents, key-value, full-text search, and vector search. +- [**Graph visualizer**](../../graphs/graph-visualizer.md): + A web-based tool for exploring your graph data with an intuitive interface and + sophisticated querying capabilities. + - [**Graph Analytics**](../../graphs/graph-analytics.md): A service that can efficiently load graph data from the core database system and run graph algorithms such as PageRank. +- [**GenAI Suite**](../../data-science/_index.md): + ArangoDB's GraphML and GraphRAG solutions for graph-powered machine learning + and GenAI applications. + - [**Notebook servers**](../../data-science/notebook-servers.md): Run Jupyter kernels in the Platform for hosting interactive, Python-based notebooks to experiment and develop applications. @@ -44,13 +52,3 @@ deploy and use it, see [The ArangoDB Platform](../../components/platform.md). - [**MLflow integration**](../../data-science/graphrag/services/mlflow.md): Use the popular MLflow for machine learning practitioners as part of the ArangoDB Platform. - -## Additional products - -- [**Graph visualizer**](../../graphs/graph-visualizer.md): - A web-based tool for exploring your graph data with an intuitive interface and - sophisticated querying capabilities. - -- [**GenAI Suite**](../../data-science/_index.md): - ArangoDB's GraphML and GraphRAG solutions for graph-powered machine learning - and GenAI applications. diff --git a/site/content/3.13/components/platform.md b/site/content/3.13/components/platform.md index 5162c3a936..a7e2e9328b 100644 --- a/site/content/3.13/components/platform.md +++ b/site/content/3.13/components/platform.md @@ -23,43 +23,51 @@ to access all of the platform features. - **Licenses**: If you want to use any paid features, you need to purchase the respective packages. -## Products available in the ArangoDB Platform +## Features of the ArangoDB Platform - **Core database system**: The ArangoDB graph database system for storing interconnected data. You can use the free Community Edition or the commercial Enterprise Edition. - **Graph visualizer**: A web-based tool for exploring your graph data with an intuitive interface and sophisticated querying capabilities. +- **Graph Analytics**: A suite of graph algorithms including PageRank, + community detection, and centrality measures with support for GPU + acceleration thanks to Nvidia cuGraph. +- **GraphML**: A turnkey solution for graph machine learning for prediction + use cases such as fraud detection, supply chain, healthcare, retail, and + cyber security. - **GenAI Suite**: A set of paid machine learning services, APIs, and user interfaces that are available as a package as well as individual products. - - **GraphRAG**: Leverage ArangoDB's Graph, Document, Key-Value, - Full-Text Search, and Vector Search features to streamline knowledge + - **GraphRAG**: Leverage ArangoDB's graph, document, key-value, + full-text search, and vector search features to streamline knowledge extraction and retrieval. + {{< comment >}}TODO: Not available in prerelease version - **Txt2AQL**: Unlock natural language querying with a service that converts user input into ArangoDB Query Language (AQL), powered by fine-tuned private or public LLMs. + {{< /comment >}} - **GraphRAG Importer**: Extract entities and relationships from large text-based files, converting unstructured data into a knowledge graph stored in ArangoDB. - **GraphRAG Retriever**: Perform semantic similarity searches or aggregate insights from graph communities with global and local queries. - - **GraphML**: A turnkey solution for graph machine learning for prediction - use cases such as fraud detection, supply chain, healthcare, retail, and - cyber security. + - **MLflow integration**: Use the popular MLflow for machine learning + practitioners as part of the ArangoDB Platform. +- **Jupyter notebooks**: Run a Jupyter kernel in the platform for hosting + interactive notebooks for experimentation and development of applications + that use ArangoDB as their backend. +{{< comment >}}TODO: Mostly unrelated to Platform, vector index in core, +- **Vector embeddings**: You can train machine learning models for later use + in vector search in conjunction with the core database system's `vector` + index type. It allows you to find similar items in your dataset. +{{< /comment >}} ## Additional features of the ArangoDB Platform -- **Vector embeddings**: You can train machine learning models for later use - in vector search in conjunction with the core database system's `vector` - index type. It allows you to find similar items in your dataset. -- **Graph Analytics**: A suite of graph algorithms including PageRank, - community detection, and centrality measures with support for GPU - acceleration thanks to Nvidia cuGraph. -- **Jupyter notebooks**: Run a Jupyter kernel in the platform for hosting - interactive notebooks for experimentation and development of applications - that use ArangoDB as their backend. + + ## Get started with the ArangoDB Platform From a9b92380c307585550c5e4b5d194c996ccba02c9 Mon Sep 17 00:00:00 2001 From: Paula Date: Mon, 21 Jul 2025 11:42:34 +0200 Subject: [PATCH 29/48] terminology: use importer and retriever --- site/content/3.13/components/platform.md | 2 +- .../3.13/data-science/graphrag/_index.md | 8 +++---- .../data-science/graphrag/services/gen-ai.md | 2 +- .../services/{rag-loader.md => importer.md} | 22 +++++++++---------- .../data-science/graphrag/services/mlflow.md | 2 +- .../{rag-retriever.md => retriever.md} | 20 ++++++++--------- .../services/triton-inference-server.md | 4 ++-- .../graphrag/tutorial-notebook.md | 22 +++++++++---------- 8 files changed, 41 insertions(+), 41 deletions(-) rename site/content/3.13/data-science/graphrag/services/{rag-loader.md => importer.md} (94%) rename site/content/3.13/data-science/graphrag/services/{rag-retriever.md => retriever.md} (93%) diff --git a/site/content/3.13/components/platform.md b/site/content/3.13/components/platform.md index a7e2e9328b..917e0c2fe5 100644 --- a/site/content/3.13/components/platform.md +++ b/site/content/3.13/components/platform.md @@ -48,7 +48,7 @@ to access all of the platform features. {{< /comment >}} - **GraphRAG Importer**: Extract entities and relationships from large text-based files, converting unstructured data into a knowledge graph - stored in ArangoDB. + stored in ArangoDB. - **GraphRAG Retriever**: Perform semantic similarity searches or aggregate insights from graph communities with global and local queries. - **MLflow integration**: Use the popular MLflow for machine learning diff --git a/site/content/3.13/data-science/graphrag/_index.md b/site/content/3.13/data-science/graphrag/_index.md index 0ab4bfcab5..376d82632f 100644 --- a/site/content/3.13/data-science/graphrag/_index.md +++ b/site/content/3.13/data-science/graphrag/_index.md @@ -81,7 +81,7 @@ GraphRAG is particularly valuable for: ### Turn text files into a Knowledge Graph -The RagLoader service is the entry point of the GraphRAG pipeline. It takes a +The Importer service is the entry point of the GraphRAG pipeline. It takes a raw text file as input, processes it using an LLM to extract entities and relationships, and generates a Knowledge Graph. The Knowledge Graph is then stored in an ArangoDB database for further use. The Knowledge Graph represents @@ -92,18 +92,18 @@ information in a structured graph format, allowing efficient querying and retrie 3. Store the generated Knowledge Graph in the database for retrieval and reasoning. For detailed information about the service, see the -[RagLoader](./services/rag-loader.md) documentation. +[Importer](./services/importer.md) service documentation. ### Extract information from the Knowledge Graph -The RagRetriever service enables intelligent search and retrieval of information +The Retriever service enables intelligent search and retrieval of information from your previously created Knowledge Graph. You can extract information from Knowledge Graphs using two distinct methods: - Global retrieval - Local retrieval For detailed information about the service, see the -[RagRetriever](./services/rag-retriever.md) documentation. +[Retriever](./services/retriever.md) service documentation. #### Global retrieval diff --git a/site/content/3.13/data-science/graphrag/services/gen-ai.md b/site/content/3.13/data-science/graphrag/services/gen-ai.md index fa5a3cf83e..a9d711476d 100644 --- a/site/content/3.13/data-science/graphrag/services/gen-ai.md +++ b/site/content/3.13/data-science/graphrag/services/gen-ai.md @@ -94,7 +94,7 @@ documentation. ## Complete Service lifecycle example -The example below shows how to install, monitor, and uninstall a RAGLoader service. +The example below shows how to install, monitor, and uninstall the Importer service. ### Step 1: Installing the service diff --git a/site/content/3.13/data-science/graphrag/services/rag-loader.md b/site/content/3.13/data-science/graphrag/services/importer.md similarity index 94% rename from site/content/3.13/data-science/graphrag/services/rag-loader.md rename to site/content/3.13/data-science/graphrag/services/importer.md index a63a0d3ebd..e59d654f44 100644 --- a/site/content/3.13/data-science/graphrag/services/rag-loader.md +++ b/site/content/3.13/data-science/graphrag/services/importer.md @@ -1,8 +1,8 @@ --- -title: RagLoader Service -menuTitle: RagLoader +title: Importer Service +menuTitle: Importer description: >- - The RagLoader service helps you transform your text document into a knowledge graph, + The Importer service helps you transform your text document into a knowledge graph, making it easier to analyze and understand complex information weight: 10 --- @@ -11,19 +11,19 @@ weight: 10 ## Overview -The RagLoader service lets you turn text files into a knowledge graph. +The Importer service lets you turn text files into a knowledge graph. It supports the following text formats with UTF-8 encoding: - `.txt` (Plain text) - `.md` (Markdown) -The RagLoader takes your text, analyzes it using the configured language model, and +The Importer takes your text, analyzes it using the configured language model, and creates a structured knowledge graph. This graph is then imported into your ArangoDB database, where you can query and analyze the relationships between -different concepts in your document with the RagRetriever service. +different concepts in your document with the Retriever service. ## What ArangoDB Collections look like after import -The RagLoader creates several collections in ArangoDB to store different +The Importer creates several collections in ArangoDB to store different aspects of your knowledge graph. See below a detailed explanation of each collection. @@ -142,7 +142,7 @@ services like OpenAI's models via the OpenAI API or a large array of models ## Installation and configuration -The RagLoader service can be configured to use either: +The Importer service can be configured to use either: - Triton Inference Server (for private LLM deployments) - OpenAI (for public LLM deployments) - OpenRouter (for public LLM deployments) @@ -159,7 +159,7 @@ Triton Inference Server and MLflow at the backend. For more details, please refer to the [Triton Inference Server](./triton-inference-server.md) and [Mlflow](./mlflow.md) documentation. -Once the `llmhost` service is up-and-running, then you can start the RAGloader +Once the `llmhost` service is up-and-running, then you can start the Importer service using the below configuration: ```json @@ -244,10 +244,10 @@ When using OpenRouter, the service defaults to `mistral-nemo` for generation ## Building Knowledge Graphs Once the service is installed successfully, you can follow these steps -to send an input file to the RAGloader service: +to send an input file to the Importer service: 1. Prepare your text document for processing (text format with UTF-8 encoding or markdown files). -2. Send the document to the RagLoader service using HTTP: +2. Send the document to the Importer service using HTTP: ```bash # Base64 encode your document base64_content=$(base64 -i your_document.txt) diff --git a/site/content/3.13/data-science/graphrag/services/mlflow.md b/site/content/3.13/data-science/graphrag/services/mlflow.md index 2cb16af117..b9dcd7391d 100644 --- a/site/content/3.13/data-science/graphrag/services/mlflow.md +++ b/site/content/3.13/data-science/graphrag/services/mlflow.md @@ -14,7 +14,7 @@ weight: 25 The ArangoDB MLflow service is a service that hosts the official MLflow application in your Kubernetes cluster and connects automatically to the ArangoDB environment, e.g. for registering the LLM to be self-hosted and -used by services requiring LLMs (Natural language service, RAGLoader, RAGRetriever). +used by services requiring LLMs (such as the Importer and Retriever services). MLflow is an open-source platform, purpose-built to assist machine learning practitioners and teams in handling the complexities of the machine learning diff --git a/site/content/3.13/data-science/graphrag/services/rag-retriever.md b/site/content/3.13/data-science/graphrag/services/retriever.md similarity index 93% rename from site/content/3.13/data-science/graphrag/services/rag-retriever.md rename to site/content/3.13/data-science/graphrag/services/retriever.md index b835831230..2e837c17ff 100644 --- a/site/content/3.13/data-science/graphrag/services/rag-retriever.md +++ b/site/content/3.13/data-science/graphrag/services/retriever.md @@ -1,9 +1,9 @@ --- -title: RagRetriever Service -menuTitle: RagRetriever +title: Retriever Service +menuTitle: Retriever description: >- - RagRetriever is a powerful service that enables intelligent search and - retrieval from knowledge graphs created by the RAGLoader + The Retriever is a powerful service that enables intelligent search and + retrieval from knowledge graphs created by the Importer service weight: 15 --- @@ -11,7 +11,7 @@ weight: 15 ## Overview -The RagRetriever service offers two distinct search methods: +The Retriever service offers two distinct search methods: - **Global search**: Analyzes entire document to identify themes and patterns, perfect for high-level insights and comprehensive summaries. - **Local search**: Focuses on specific entities and their relationships, ideal @@ -31,9 +31,9 @@ graph and get contextually relevant responses. ## Search methods -The RagRetriever service enables intelligent search and retrieval of information +The Retriever service enables intelligent search and retrieval of information from your knowledge graph. It provides two powerful search methods, global Search -and local Search, that leverage the structured knowledge graph created by the RAGLoader +and local Search, that leverage the structured knowledge graph created by the Importer to deliver accurate and contextually relevant responses to your natural language queries. ### Global search @@ -74,7 +74,7 @@ entities, or relationships. ## Installation -The RagRetriever service can be configured to use either the Triton Inference Server +The Retriever service can be configured to use either the Triton Inference Server (for private LLM deployments) or OpenAI/OpenRouter (for public LLM deployments). To start the service, use the GenAI service endpoint `/v1/graphragretriever`. @@ -89,7 +89,7 @@ Triton Inference Server and MLflow at the backend. For more details, please refer to the [Triton Inference Server](./triton-inference-server.md) and [Mlflow](./mlflow.md) documentation. -Once the `llmhost` service is up-and-running, then you can start the RAGloader +Once the `llmhost` service is up-and-running, then you can start the Importer service using the below configuration: ```json @@ -173,7 +173,7 @@ When using OpenRouter, the service defaults to `mistral-nemo` for generation ## Executing queries -After the RagRetriever service is installed successfully, you can interact with +After the Retriever service is installed successfully, you can interact with it using the following HTTP endpoints, based on the selected search method. {{< tabs "executing-queries" >}} diff --git a/site/content/3.13/data-science/graphrag/services/triton-inference-server.md b/site/content/3.13/data-science/graphrag/services/triton-inference-server.md index aed102ca8d..9e23a6ee02 100644 --- a/site/content/3.13/data-science/graphrag/services/triton-inference-server.md +++ b/site/content/3.13/data-science/graphrag/services/triton-inference-server.md @@ -21,8 +21,8 @@ following steps: 1. Install the Triton LLM Host service. 2. Register your LLM model to MLflow by uploading the required files. -3. Configure the [RagLoader](rag-loader.md#using-triton-inference-server-private-llm) service to use your LLM model. -4. Configure the [RagRetriever](rag-retriever.md#using-triton-inference-server-private-llm) service to use your LLM model. +3. Configure the [Importer](importer.md#using-triton-inference-server-private-llm) service to use your LLM model. +4. Configure the [Retriever](retriever.md#using-triton-inference-server-private-llm) service to use your LLM model. {{< tip >}} Check out the dedicated [ArangoDB MLflow](mlflow.md) documentation page to learn diff --git a/site/content/3.13/data-science/graphrag/tutorial-notebook.md b/site/content/3.13/data-science/graphrag/tutorial-notebook.md index 412d7e7ef3..0aabf32197 100644 --- a/site/content/3.13/data-science/graphrag/tutorial-notebook.md +++ b/site/content/3.13/data-science/graphrag/tutorial-notebook.md @@ -19,10 +19,10 @@ to provide precise and contextually relevant responses from unstructured text da You will learn how to: - Prepare your raw text data (PDFs in this case) into a structured format suitable for Knowledge Graph extraction using Docling. -- Utilize the ArangoDB RagLoader service to automatically extract +- Utilize the ArangoDB Importer service to automatically extract entities and relationships from your prepared text and store them as a Knowledge Graph in ArangoDB. -- Query your newly created Knowledge Graph using the ArangoDB RagRetriever +- Query your newly created Knowledge Graph using the ArangoDB Retriever service for both broad (global) and targeted (local) information retrieval. - Set up a simple Gradio interface to interact with your GraphRAG pipeline. @@ -117,7 +117,7 @@ except Exception as e: ``` The next step is to encode the content of the Markdown file into Base64, -which is required for the RagLoader service. +which is required for the Importer service. ```py %%time @@ -140,14 +140,14 @@ file_content = encode_file_content(f"./{FILE_NAME}_docling.md") ## Step 2: Import your document to generate the Knowledge Graph -Once your document is prepared, you can start the RagLoader service. This +Once your document is prepared, you can start the Importer service. This service takes your processed Markdown content, extracts entities and relationships, and then stores this structured information as a Knowledge Graph within your specified ArangoDB database. -### Start the RagLoader (Importer) service +### Start the Importer service -Start the RagLoader importer service providing the necessary configuration +Start the Importer service providing the necessary configuration parameters. ```py @@ -216,10 +216,10 @@ You can also configure the display options: - Set the **Entities** label to `entity_name`. - For **Edges** (relations), set the label to `type`. -## Step 3: Query the Knowledge Graph with the RagRetriever service +## Step 3: Query the Knowledge Graph with the Retriever service To retrieve information from the Knowledge Graph, you need to deploy the -GraphRAG Retriever service. This service interacts with your Knowledge Graph +Retriever service. This service interacts with your Knowledge Graph and uses an LLM to formulate answers to your queries. ### Startup parameters @@ -231,7 +231,7 @@ and uses an LLM to formulate answers to your queries. - `db_name`: The name of the database where your Knowledge Graph was created. - `username`: The ArangoDB username. This user needs to have write access to the specified database. -### Start the RagRetriever service +### Start the Retriever service ```py %%time @@ -252,7 +252,7 @@ retriever_service_id = response["serviceInfo"]["serviceId"].split("-")[-1] print(f"Retriever Service ID: {retriever_service_id}") ``` -The RagRetriever service is available at the following endpoint, which allows you +The Retriever service is available at the following endpoint, which allows you to send queries to the Knowledge Graph: ``` /graphrag/retriever/{service_id}/v1/graphrag-query @@ -334,7 +334,7 @@ pprint(retrieverResponse["result"]) To make querying your Knowledge Graph more interactive, you can use Gradio to create a simple chat interface. This allows you to submit queries and see real-time -responses from the RagRetriever. +responses from the Retriever. First, define the functions that handle the queries through the Gradio interface: From a4b95db5f3564f2b59c21d0f4ec4df47a5ad68fe Mon Sep 17 00:00:00 2001 From: Paula Date: Mon, 21 Jul 2025 12:32:18 +0200 Subject: [PATCH 30/48] add pre-release and get in touch note --- site/content/3.13/components/platform.md | 7 +++++++ site/content/3.13/data-science/_index.md | 6 ++++++ site/content/3.13/data-science/graphml/_index.md | 6 ++++++ site/content/3.13/data-science/graphrag/_index.md | 6 ++++++ site/content/3.13/data-science/notebook-servers.md | 6 ++++++ site/content/3.13/graphs/graph-visualizer.md | 6 ++++++ 6 files changed, 37 insertions(+) diff --git a/site/content/3.13/components/platform.md b/site/content/3.13/components/platform.md index 917e0c2fe5..6b8a36dece 100644 --- a/site/content/3.13/components/platform.md +++ b/site/content/3.13/components/platform.md @@ -6,6 +6,13 @@ description: >- The ArangoDB Platform brings everything ArangoDB offers together to a single solution that you can deploy on-prem or use as a managed service --- + +{{< tip >}} +The ArangoDB Platform & GenAI suite is available as a pre-release. To get +exclusive early access, [get in touch](https://arangodb.com/contact/) with +the ArangoDB team. +{{< /tip >}} + The ArangoDB Platform is a technical infrastructure that acts as the umbrella for hosting the entire ArangoDB offering of products. The Platform makes it easy to deploy and operate the core ArangoDB database system along with any additional diff --git a/site/content/3.13/data-science/_index.md b/site/content/3.13/data-science/_index.md index 75071cacff..1370e8c08e 100644 --- a/site/content/3.13/data-science/_index.md +++ b/site/content/3.13/data-science/_index.md @@ -11,6 +11,12 @@ aliases: {{< tag "ArangoDB Platform" >}} +{{< tip >}} +The ArangoDB Platform & GenAI suite is available as a pre-release. To get +exclusive early access, [get in touch](https://arangodb.com/contact/) with +the ArangoDB team. +{{< /tip >}} + ArangoDB provides a wide range of functionality that can be utilized for data science applications. The core database system includes multi-model storage of information with scalable graph and information retrieval capabilities that diff --git a/site/content/3.13/data-science/graphml/_index.md b/site/content/3.13/data-science/graphml/_index.md index 641ba60bad..33b27e52f2 100644 --- a/site/content/3.13/data-science/graphml/_index.md +++ b/site/content/3.13/data-science/graphml/_index.md @@ -10,6 +10,12 @@ aliases: {{< tag "ArangoDB Platform" >}} +{{< tip >}} +The ArangoDB Platform & GenAI suite is available as a pre-release. To get +exclusive early access, [get in touch](https://arangodb.com/contact/) with +the ArangoDB team. +{{< /tip >}} + Traditional Machine Learning (ML) overlooks the connections and relationships between data points, which is where graph machine learning excels. However, accessibility to GraphML has been limited to sizable enterprises equipped with diff --git a/site/content/3.13/data-science/graphrag/_index.md b/site/content/3.13/data-science/graphrag/_index.md index 376d82632f..4b059fd8eb 100644 --- a/site/content/3.13/data-science/graphrag/_index.md +++ b/site/content/3.13/data-science/graphrag/_index.md @@ -11,6 +11,12 @@ aliases: {{< tag "ArangoDB Platform" >}} +{{< tip >}} +The ArangoDB Platform & GenAI suite is available as a pre-release. To get +exclusive early access, [get in touch](https://arangodb.com/contact/) with +the ArangoDB team. +{{< /tip >}} + ## Introduction Large language models (LLMs) and knowledge graphs are two prominent and diff --git a/site/content/3.13/data-science/notebook-servers.md b/site/content/3.13/data-science/notebook-servers.md index f93dfb0892..df0ed6ad46 100644 --- a/site/content/3.13/data-science/notebook-servers.md +++ b/site/content/3.13/data-science/notebook-servers.md @@ -9,6 +9,12 @@ aliases: --- {{< tag "ArangoDB Platform" >}} +{{< tip >}} +The ArangoDB Platform & GenAI suite is available as a pre-release. To get +exclusive early access, [get in touch](https://arangodb.com/contact/) with +the ArangoDB team. +{{< /tip >}} + ArangoDB Notebooks provide a Python-based, Jupyter-compatible interface for building and experimenting with graph-powered data, GenAI, and graph machine learning workflows directly connected to ArangoDB databases. The notebook servers are diff --git a/site/content/3.13/graphs/graph-visualizer.md b/site/content/3.13/graphs/graph-visualizer.md index 5d84b8e292..4b87c56a99 100644 --- a/site/content/3.13/graphs/graph-visualizer.md +++ b/site/content/3.13/graphs/graph-visualizer.md @@ -8,6 +8,12 @@ description: >- {{< tag "ArangoDB Platform" >}} +{{< tip >}} +The ArangoDB Platform & GenAI suite is available as a pre-release. To get +exclusive early access, [get in touch](https://arangodb.com/contact/) with +the ArangoDB team. +{{< /tip >}} + The **Graph Visualizer** is a browser-based tool integrated into the web interface of the ArangoDB Platform. It lets you explore the connections of your named graphs to visually understand the structure as well as to inspect and edit the attributes From 0bb7c82f7048828d9614b895ad86854e74603ca7 Mon Sep 17 00:00:00 2001 From: Paula Date: Mon, 21 Jul 2025 14:20:54 +0200 Subject: [PATCH 31/48] add more cross references --- site/content/3.13/data-science/_index.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/site/content/3.13/data-science/_index.md b/site/content/3.13/data-science/_index.md index 1370e8c08e..e71836bcfd 100644 --- a/site/content/3.13/data-science/_index.md +++ b/site/content/3.13/data-science/_index.md @@ -46,29 +46,29 @@ The GenAI Suite is comprised of two major components: Each component has an intuitive graphical user interface integrated into the ArangoDB Platform web interface, guiding you through the process. - Alongside these components, you also get the following additional features: -- **Graph visualizer**: A web-based tool for exploring your graph data with an +- [**Graph visualizer**](../graphs/graph-visualizer.md): A web-based tool for exploring your graph data with an intuitive interface and sophisticated querying capabilities. -- **Jupyter notebooks**: Run a Jupyter kernel in the platform for hosting +- [**Jupyter notebooks**](notebook-servers.md): Run a Jupyter kernel in the platform for hosting interactive notebooks for experimentation and development of applications that use ArangoDB as their backend. -- **MLflow integration**: Built-in support for the popular management tool for +- [**MLflow integration**](./graphrag/services/mlflow.md): Built-in support for the popular management tool for the machine learning lifecycle. -- **Adapters**: Use ArangoDB together with cuGraph, NetworkX, and other tools. +- [**Integrations**](./integrations/_index.md): Use ArangoDB together with cuGraph, NetworkX, + and other data science tools. - **Application Programming Interfaces**: Use the underlying APIs of the - GenAI Suite services and build your own integrations. + GenAI Suite services and build your own integrations. See the + [API reference](https://arangoml.github.io/platform-dss-api/GenAI-Service/proto/index.html) documentation + for more details. ## Other tools and features - - The ArangoDB Platform includes the following features independent of the GenAI Suite: -- [**Graph Analytics**](#graph-analytics): Run graph algorithms such as PageRank +- [**Graph Analytics**](../graphs/graph-analytics.md): Run graph algorithms such as PageRank on dedicated compute resources. ## From graph to AI From c10901692c01fb72a311682585c6d816c7e54a70 Mon Sep 17 00:00:00 2001 From: Paula Date: Tue, 22 Jul 2025 14:10:02 +0200 Subject: [PATCH 32/48] add pre-release note to remaining pages --- .../content/3.13/data-science/graphrag/services/gen-ai.md | 8 ++++++++ .../3.13/data-science/graphrag/services/importer.md | 6 ++++++ .../content/3.13/data-science/graphrag/services/mlflow.md | 6 ++++++ .../3.13/data-science/graphrag/services/retriever.md | 6 ++++++ .../graphrag/services/triton-inference-server.md | 8 ++++++++ .../3.13/data-science/graphrag/tutorial-notebook.md | 6 ++++++ 6 files changed, 40 insertions(+) diff --git a/site/content/3.13/data-science/graphrag/services/gen-ai.md b/site/content/3.13/data-science/graphrag/services/gen-ai.md index a9d711476d..e888e586b4 100644 --- a/site/content/3.13/data-science/graphrag/services/gen-ai.md +++ b/site/content/3.13/data-science/graphrag/services/gen-ai.md @@ -9,6 +9,14 @@ weight: 5 {{< tag "ArangoDB Platform" >}} +{{< tip >}} +The ArangoDB Platform & GenAI suite is available as a pre-release. To get +exclusive early access, [get in touch](https://arangodb.com/contact/) with +the ArangoDB team. +{{< /tip >}} + +## Overview + The basic operations that the GenAI orchestration service carries out are the following: - Install a service - Uninstall a service diff --git a/site/content/3.13/data-science/graphrag/services/importer.md b/site/content/3.13/data-science/graphrag/services/importer.md index e59d654f44..cbcbaa051a 100644 --- a/site/content/3.13/data-science/graphrag/services/importer.md +++ b/site/content/3.13/data-science/graphrag/services/importer.md @@ -9,6 +9,12 @@ weight: 10 {{< tag "ArangoDB Platform" >}} +{{< tip >}} +The ArangoDB Platform & GenAI suite is available as a pre-release. To get +exclusive early access, [get in touch](https://arangodb.com/contact/) with +the ArangoDB team. +{{< /tip >}} + ## Overview The Importer service lets you turn text files into a knowledge graph. diff --git a/site/content/3.13/data-science/graphrag/services/mlflow.md b/site/content/3.13/data-science/graphrag/services/mlflow.md index b9dcd7391d..dac1462163 100644 --- a/site/content/3.13/data-science/graphrag/services/mlflow.md +++ b/site/content/3.13/data-science/graphrag/services/mlflow.md @@ -9,6 +9,12 @@ weight: 25 {{< tag "ArangoDB Platform" >}} +{{< tip >}} +The ArangoDB Platform & GenAI suite is available as a pre-release. To get +exclusive early access, [get in touch](https://arangodb.com/contact/) with +the ArangoDB team. +{{< /tip >}} + ## Overview The ArangoDB MLflow service is a service that hosts the official MLflow diff --git a/site/content/3.13/data-science/graphrag/services/retriever.md b/site/content/3.13/data-science/graphrag/services/retriever.md index 2e837c17ff..3dccd07831 100644 --- a/site/content/3.13/data-science/graphrag/services/retriever.md +++ b/site/content/3.13/data-science/graphrag/services/retriever.md @@ -9,6 +9,12 @@ weight: 15 {{< tag "ArangoDB Platform" >}} +{{< tip >}} +The ArangoDB Platform & GenAI suite is available as a pre-release. To get +exclusive early access, [get in touch](https://arangodb.com/contact/) with +the ArangoDB team. +{{< /tip >}} + ## Overview The Retriever service offers two distinct search methods: diff --git a/site/content/3.13/data-science/graphrag/services/triton-inference-server.md b/site/content/3.13/data-science/graphrag/services/triton-inference-server.md index 9e23a6ee02..113f569dfc 100644 --- a/site/content/3.13/data-science/graphrag/services/triton-inference-server.md +++ b/site/content/3.13/data-science/graphrag/services/triton-inference-server.md @@ -8,6 +8,14 @@ weight: 30 {{< tag "ArangoDB Platform" >}} +{{< tip >}} +The ArangoDB Platform & GenAI suite is available as a pre-release. To get +exclusive early access, [get in touch](https://arangodb.com/contact/) with +the ArangoDB team. +{{< /tip >}} + +## Overview + The **Triton LLM Host** service provides scalable deployment of Large Language Models (LLMs) using the NVIDIA Triton Inference Server. It efficiently serves machine learning models with support for HTTP and gRPC APIs, customizable routing, diff --git a/site/content/3.13/data-science/graphrag/tutorial-notebook.md b/site/content/3.13/data-science/graphrag/tutorial-notebook.md index 0aabf32197..c5059ae4eb 100644 --- a/site/content/3.13/data-science/graphrag/tutorial-notebook.md +++ b/site/content/3.13/data-science/graphrag/tutorial-notebook.md @@ -8,6 +8,12 @@ weight: 5 {{< tag "ArangoDB Platform" >}} +{{< tip >}} +The ArangoDB Platform & GenAI suite is available as a pre-release. To get +exclusive early access, [get in touch](https://arangodb.com/contact/) with +the ArangoDB team. +{{< /tip >}} + ## Tutorial overview This tutorial guides you through the process of building a From 8d7ad8bcad512b64510102baebfdd84107f79664 Mon Sep 17 00:00:00 2001 From: Paula Date: Tue, 22 Jul 2025 15:36:09 +0200 Subject: [PATCH 33/48] update GraphML screenshot --- site/content/3.13/data-science/graphml/ui.md | 4 ++-- .../images/create-graphml-project-ui.png | Bin 0 -> 654142 bytes site/content/images/datascience-intro.jpg | Bin 93099 -> 0 bytes 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 site/content/images/create-graphml-project-ui.png delete mode 100644 site/content/images/datascience-intro.jpg diff --git a/site/content/3.13/data-science/graphml/ui.md b/site/content/3.13/data-science/graphml/ui.md index 602f78e882..9386b2d538 100644 --- a/site/content/3.13/data-science/graphml/ui.md +++ b/site/content/3.13/data-science/graphml/ui.md @@ -24,8 +24,8 @@ giving you a clear path from data to prediction: To create a new GraphML project using the ArangoDB Platform web interface, follow these steps: 1. From the left-hand sidebar, select the database where you want to create the project. -2. In the left-hand sidebar, click **GenAI** to open the GraphML project management interface, then click **Run GraphML**. - ![Navigate to Data Science](../../../images/datascience-intro.jpg) +2. In the left-hand sidebar, click **GenAI Suite** to open the GraphML project management interface, then click **Run GraphML**. + ![Create GraphML Project](../../../images/create-graphml-project-ui.png) 3. In the **GraphML projects** view, click **Add new project**. 4. The **Create ML project** modal opens. Enter a **Name** for your machine learning project. 5. Click the **Create project** button to finalize the creation. diff --git a/site/content/images/create-graphml-project-ui.png b/site/content/images/create-graphml-project-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..a58f4541f5b56afd6a93b40d8dd4091a960ec714 GIT binary patch literal 654142 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
k>9()d$K6h-eqJYz+q|PaGWf^kni9(lw3ZeyG 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®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

^_u|)3gxO4@!1&%w1^O@^^ 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%0DY)ct-SHwyW0!Or$ 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

1B&!8_6T?4np%^=?i92 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⪻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

yX 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 Te4?sl28nZ4yzMQpy;+}pDI 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