Configurable RAG contexts

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Problem to solve

Different technologies could be useful for providing context to an LLM for use in Duo chat, Code Suggestions (or more) and search:

  • Elasticsearch for enhanced search
    • Code search
    • Text search (issues, MRs, etc.)
    • Semantic search (embeddings)
    • Hybrid search
  • OpenSearch, same capabilities as Elasticsearch
  • Zoekt for enhanced code search
  • Postgres for filtered data
  • PGVector for semantic search

The pushback we've been getting is that not every SM instance has Elasticsearch/OpenSearch running and we don't want to force customers to host and manage infrastructure.

Proposal

Allow admins to configure which tools they want to use so that:

  1. GitLab Duo trials are easy to stand up without requiring additional setup
  2. Systems using RAG (e.g. Code Suggestions) functions with a baseline but can be improved by adding additional RAG sources.

Screenshot_2024-07-24_at_17.28.05

In the example above, we have basic code search as the default (available during trials and to all customers). If a customer wants to improve their Code Suggestion results, adding more sources such as from Elasticsearch or Zoekt would be available.

We'd need a way to "unlock" every option by having the customer do the setup and doing a verify check and then the customer can toggle which options are selected.

We also want to carefully consider which options to add. In &14443 we are exploring different options which will be evaluated and we'd then decide whether or not the gain justifies the effort required to implement and support the option.

Edited by 🤖 GitLab Bot 🤖