Project: Resources AI Chatbot Plugin
Hi everyone! I am Vatsal Jain, and I have been contributing to the AI Chatbot plugin (focusing on refactoring the chunking engine and preprocessing pipelines).
As I prepare my final GSoC proposal, I want to discuss the Retrieval Architecture. Currently, the plugin uses a lightweight Hybrid Search (Sentence-Transformers all-MiniLM-L6-v2 + BM25). While efficient, this “one-size-fits-all” approach limits accuracy for complex queries on powerful controllers, while potentially being too heavy for very small instances.
The Problem
Jenkins controllers vary wildly in resources from Raspberry Pis to massive 64-core clusters.
-
Small Controllers: Cannot handle heavy embedding models without CPU spikes.
-
Large Controllers: Can easily handle better models for higher accuracy, but are currently stuck with the lightweight default.
-
Enterprise/Cloud: Might prefer offloading the work to an API (OpenAI/Azure) to keep the controller idle.
The Proposal: “Adaptive Search Profiles”
Instead of exposing raw model names (which is poor UX for non-AI experts), I propose implementing Search Profiles. This abstraction allows admins to choose the intent that matches their infrastructure:
-
Standard (Default):
-
Model:
all-MiniLM-L6-v2(Current). -
Use Case: Safe for 90% of users. Low CPU usage, decent accuracy.
-
-
Advanced (High Accuracy):
-
Model:
all-mpnet-base-v2(or similar). -
Use Case: For controllers with spare RAM/CPU. Significantly better semantic understanding of Jenkins errors.
-
-
Cloud (API):
-
Provider: OpenAI / Azure / Cohere.
-
Use Case: Best possible accuracy with zero CPU load on the Jenkins controller. (Requires API Key).
-
My Question to the Community
Does this “Profile” abstraction align with how we handle other resource-intensive plugins?
-
Should we strictly enforce the lightweight model to prevent users from accidentally crashing their controllers?
-
Is an external API (Cloud Profile) a welcome feature, or do air-gapped constraints make it low priority?
I have already completed the refactoring of the BaseChunker to support this swappable architecture. I would love your feedback on the feasibility of this approach for the final proposal!
Looking forward to your thoughts.