NoughtDigital RAG Assistant
NoughtDigital RAG Assistant builds a Retrieval-Augmented Generation (RAG) system from selected WordPress posts, pages, and public custom post types. It connects directly to the Qdrant and AI services configured by the site administrator.
How It Works:
The plugin prepares selected published content, generates embeddings through OpenAI, and stores the vectors and content payloads in Qdrant. It can synchronise updates automatically and remove deleted content from Qdrant.
When a visitor submits a chat question, the plugin creates an OpenAI query embedding, searches Qdrant, and sends relevant content to the selected chat provider: OpenAI, Anthropic Claude, Mistral AI, xAI Grok, Google Gemini, or Amazon Bedrock. The chatbot can appear globally or through the [noragass_chat] shortcode.
Free features:
- Complete Qdrant Cloud and self-hosted Qdrant configuration
- OpenAI embeddings, including embedding model and dimensions settings
- Credentials and chat-provider support for OpenAI, Anthropic Claude, Mistral AI, xAI Grok, Google Gemini, and Amazon Bedrock
- Manual and automatic content synchronisation for selected post types
- A configurable global or shortcode-based chat UI
- Optional semantic replacement for standard WordPress search
- Optional local analytics, diagnostics, personalisation, and analytics-based result reordering
- Content support for ACF, WooCommerce, and Easy Digital Downloads when available
- Chat model, RAG retrieval count and threshold, system prompt, no-results message, and conversation-style controls
Requirements:
- OpenAI API key (for embeddings and optional chat)
- Qdrant vector database (cloud or self-hosted)
- Credentials for the selected chat provider when it is not OpenAI
Privacy Policy
Local analytics (disabled by default):
When a site administrator enables analytics, the plugin records a random session identifier, query text and hash, result post ID and position, relevance score, interaction source, click state, engagement time, bounce state, and timestamp. It also maintains aggregate impressions, clicks, engagement, bounces, average positions, and quality scores. This data is stored in WordPress database tables whose names end in noragass_search_interactions and noragass_result_performance; it is not sent to an analytics vendor.
A daily cleanup removes both raw interaction rows and aggregate performance rows after 90 days.
When analytics is enabled, the plugin sets an HTTP-only, SameSite=Lax noragass_session cookie containing a random 32-character identifier. It expires after 24 hours and is marked Secure on HTTPS sites. The last query and interaction source are also stored temporarily in browser local storage for click and engagement attribution.
Analytics records do not contain raw IP addresses or WordPress user IDs. Query text can nevertheless contain personal information entered by a visitor.
Personalisation (disabled by default):
When an administrator enables personalisation, the plugin records up to 50 unique IDs of published posts viewed by each logged-in user in the noragass_recent_views user-meta field. The history is associated with that WordPress user account and is used to infer preferred post types and categories when reordering that user’s search results. Older IDs are displaced as new unique posts are viewed; there is no time-based expiry. Disabling personalisation stops new records and stops the history being used, but existing history remains until the plugin is uninstalled or the metadata is removed manually. Uninstalling the plugin deletes this user metadata.
Vector-sync metadata:
The plugin stores sync state in the _noragass_vector_sync_status, _noragass_vector_sync_date, _noragass_vector_sync_error, _noragass_vector_sync_action, and _noragass_vector_sync_queued_at post metadata. These five metadata fields are removed from all posts when the plugin is uninstalled.
Chat browser storage:
The chat stores up to 20 user/assistant messages, related source context, and timestamps in noragass_conversation_history. It also uses noragass-chat-minimized for interface state and noragass-chat-sync for cross-tab synchronisation. These values remain in that browser until the visitor clears them or the plugin removes them. Chat questions are also sent through the site’s WordPress AJAX endpoint and to the configured APIs as described below.
Plugin settings and credentials:
Qdrant configuration, provider credentials, and interface settings are stored as standard WordPress options. WordPress does not encrypt option values by default. Site owners must protect their WordPress database, backups, server, transport, and administrator accounts.
External processing:
After configuration, OpenAI processes prepared site content and visitor queries for embeddings; the configured Qdrant endpoint stores vectors and content payloads; and the selected chat provider processes the system instructions, visitor query, and retrieved context. Full field-level and service details appear in the External services section.
Site owners must disclose this processing to visitors and establish any required lawful basis or consent. Disabling analytics stops new local analytics collection. Uninstalling removes plugin options, analytics tables, personalisation user metadata, and vector-sync post metadata, but it does not clear browser storage or delete data held by Qdrant or an AI provider.
External services
This plugin connects to external services to provide embeddings, vector search, and generated chat answers. Embedding, vector, and chat calls begin after an administrator supplies the relevant endpoint and credentials and then syncs content or exposes chat/search functionality. Service operators may process request metadata such as IP addresses in addition to the application data listed below.
Qdrant Vector Database
This plugin connects to your Qdrant vector database instance to store and retrieve vector embeddings of your WordPress content. Qdrant is used as the core vector storage engine that powers semantic search and RAG queries.
- Data sent during content sync: The numerical embedding and prepared content text; post ID, title, permalink, type, date, status, author ID, and author display name; and, when available, excerpt, category/tag names, public custom-taxonomy term names, featured-image URL, scalar ACF fields, and product price, SKU, type, and stock status. Prepared content can also include selected custom metadata, product descriptions and attributes, and other values added through plugin filters.
- Data sent during search/chat: A numerical query embedding. Deletion requests send the relevant point ID.
- When sent: During content sync, update, or deletion, and when a visitor performs semantic search or asks the chatbot a question.
- Your control: You provide the Qdrant host URL. A self-hosted endpoint is governed by the site owner’s hosting arrangements.
- Service homepage: https://qdrant.tech
- Terms for Qdrant Cloud: https://cloud.qdrant.io/service-agreement
- Privacy policy for Qdrant Cloud: https://cloud.qdrant.io/privacy-policy
OpenAI API
This plugin connects to the OpenAI API to generate text embeddings for your WordPress content and optionally to generate AI chat responses.
- Data sent for content embeddings: Prepared text containing the post title, body, excerpt, author display name, public taxonomy terms, selected custom metadata, scalar ACF values, and available product details.
- Data sent for query embeddings: Each visitor’s search or chat question, even when another provider is selected for answer generation.
- Additional data sent when OpenAI generates the answer: System instructions, the visitor’s question, and retrieved content passages.
- When sent: During content sync and whenever semantic search or chat needs a query embedding; answer-generation data is sent when OpenAI is the selected chat provider.
- Service homepage: https://openai.com
- Terms: https://openai.com/policies/services-agreement/
- Privacy policy: https://openai.com/policies/privacy-policy/
Anthropic (Claude) API
When Claude is selected as the AI chat provider, this plugin connects to the Anthropic API to generate chat responses.
- Data sent: System instructions, the visitor’s question, and retrieved content passages.
- When sent: When a user sends a message in the chatbot and Claude is the configured chat provider.
- Service homepage: https://www.anthropic.com
- Terms: https://www.anthropic.com/legal/commercial-terms
- Privacy policy: https://www.anthropic.com/legal/privacy
Mistral AI API
When Mistral is selected as the AI chat provider, this plugin connects to the Mistral AI API to generate chat responses.
- Data sent: System instructions, the visitor’s question, and retrieved content passages.
- When sent: When a user sends a message in the chatbot and Mistral is the configured chat provider.
- Service homepage: https://mistral.ai
- Terms: https://legal.mistral.ai/terms/commercial-terms-of-service
- Privacy policy: https://legal.mistral.ai/terms/privacy-policy
xAI (Grok) API
When Grok is selected as the AI chat provider, this plugin connects to the xAI API to generate chat responses.
- Data sent: System instructions, the visitor’s question, and retrieved content passages.
- When sent: When a user sends a message in the chatbot and Grok is the configured chat provider.
- Service homepage: https://x.ai
- Terms: https://x.ai/legal/terms-of-service-enterprise
- Privacy policy: https://x.ai/legal/privacy-policy
- API data processing addendum: https://x.ai/legal/data-processing-addendum
Google Gemini API
When Gemini is selected as the AI chat provider, this plugin connects to the Google Generative Language API to generate chat responses.
- Data sent: System instructions, the visitor’s question, and retrieved content passages. The configured Gemini API key is included in the HTTPS request URL used by the plugin.
- When sent: When a user sends a message in the chatbot and Gemini is the configured chat provider.
- Service homepage: https://ai.google.dev
- Terms: https://ai.google.dev/gemini-api/terms
- Privacy policy: https://policies.google.com/privacy
Amazon Bedrock
When Amazon Bedrock is selected as the AI chat provider, this plugin connects to the AWS Bedrock Runtime API to generate chat responses.
- Data sent: System instructions, the visitor’s question, and retrieved content passages. AWS access credentials and any configured session token are used to sign the request.
- When sent: When a user sends a message in the chatbot and Bedrock is the configured chat provider.
- Service homepage: https://aws.amazon.com/bedrock/
- Terms: https://aws.amazon.com/agreement/
- Privacy policy: https://aws.amazon.com/privacy/
Bundled Dependencies
This plugin includes the following bundled dependencies:
- Chart.js (version 4.5.1) – Licensed under the MIT License. Used for the optional analytics dashboard charts. The minified distribution and its human-readable
chart.jssource are bundled locally incore/includes/assets/js/. Upstream source: https://github.com/chartjs/Chart.js/tree/v4.5.1
All bundled dependencies are licensed under compatible open source licenses. The plugin itself is licensed under GPLv3.
Credits
NoughtDigital RAG Assistant is developed by NoughtDigital.
Support
For support, feature requests, and bug reports, visit: https://wordpress.org/support/plugin/noughtdigital-rag-assistant/