RAG knowledge assistant RFP questions: how to run the evaluation
An organization that wants a RAG knowledge assistant answering from internal documents with citations should not judge bidders on how confident their proposals sound. The same written questions, sent in the same form to every bidder, are the only fair basis for comparison, and each answer should come with evidence: a configuration export, a test report, a sample audit log, a named runbook or a reference architecture diagram. Ask each partner to show permission-aware retrieval working on a test corpus where two users with different access rights ask the same question, and to show what the answer and its citations look like in each case. Assurances such as "we follow best practice" should be recorded as unanswered.
Compare the written scopes side by side before comparing prices. Each bid should state what is in scope (connectors, file types, scanned content, evaluation sets, guardrails, handover documentation), what is delivered and in what form, what is excluded and who pays for the exclusions. Exclusions often decide the real cost, so ask for the list of assumptions the partner made about your identity provider, document sources, hardware and reindexing frequency. Quotes for fixed-scope work should be traceable to that written scope. Confirm with each bidder which costs recur after go-live, such as model inference, vector database hosting, evaluation runs and upgrades, and which are one-time.
DeployOpen runs this same evaluation on itself: it answers the questions below in writing, supports each answer with artifacts, and lists what it excludes. The questions apply to any implementation partner, and a buyer should expect the same level of evidence from every bidder. Where a partner cannot answer, the honest result is a gap that goes into the contract as a named risk, not a promise to resolve it later.
Questions on permissions, retrieval testing and answer accuracy
How do source document permissions get copied into the index and enforced at query time?
A strong partner names the enforcement point and shows it working. Permissions are read from the source system (file share, wiki, document management system or helpdesk), stored as access metadata on every chunk, and filtered before any text reaches the model. The answer should specify which identity system supplies group membership, how the assistant authenticates users (for example through OIDC or SAML), and whether filtering happens inside the vector database query or in a service in front of it. Ask for a test where a user without access to a folder asks a question whose answer lives only there, and confirm that no snippet, citation or summary leaks. Open WebUI documents role-based access control with groups and per-resource permissions, and Dify Enterprise documents separate SSO scopes for workspace and web app access, so ask how these are configured for the chosen platform.
What happens to answers when a document's permissions change at the source?
The partner should describe a sync job that re-reads permissions on a defined schedule and on change events where the source supports them, then updates access metadata on affected chunks without a full re-index. Ask how long a revoked user can still see content after removal in the source, and whether the design fails closed when the sync is delayed or errors. Ask whether group membership is resolved at query time from the identity provider or cached, and how cached entries expire. A good answer includes a re-test after each change: a scripted set of users and documents whose expected visibility is checked against the live index. Confirm that deleted source files also remove their chunks and embeddings, not only their titles.
How is retrieval tested against a labeled question set?
Retrieval testing starts with a question set that the client owns, written by subject experts, with each question linked to the documents and passages that should answer it. The partner should measure whether the correct source appears in the top results for each question, and report the results per collection and per user role. Ask for the size and make-up of the set, how it covers edge cases such as scanned tables, superseded policies and questions with no answer in the corpus, and how it is versioned. The test set should be kept separate from anything used to tune chunking or reranking, so the scores are not inflated. Ask who maintains the labels after launch and how new documents add new test questions.
How are answer accuracy and citation correctness scored?
Accuracy and citation correctness are scored separately. Accuracy checks whether the answer is supported by the retrieved text and matches the expected answer, typically through human review of a sample plus automated judgments that the client can audit. Citation correctness checks that each cited passage actually contains the claim it supports, and that the link opens the current version of the document. Ask the partner to name the evaluation tooling and where the scores are stored. Langfuse and Arize Phoenix both offer tracing and evaluation features, and Phoenix is licensed under the Elastic License 2.0, which restricts offering it as a hosted service, so confirm the licensing fits the deployment. Ask for the pass criteria agreed before launch and the process for a release that falls below them.
How are retrieval and answer failures logged for review?
Failures should be logged as structured records that link the user query, the retrieved chunks with their source and version, the permission filter applied, the model and prompt version, the answer, and the citations shown. The partner should explain how logs are stored in the client's infrastructure, who can read them, how long they are kept, and how personal data in queries is handled. Ask whether logs cover refusals, empty retrievals and user feedback, and how reviewers triage them into test set additions. For systems that may be high risk, Article 12 of the EU AI Act requires technical capability for automatic event logging over the system's lifetime, and Article 19 requires providers to keep those logs for at least six months unless other law provides otherwise. Ask for a sample record of a logged query so you can judge completeness before signing.
What does a retrieval and accuracy test engagement cost, and what drives it?
DeployOpen does not publish prices, and no supplied figure gives a cost for evaluation work, so ask for a fixed-scope quote built from written deliverables. The main cost drivers are the number of document collections, the size and complexity of the labeled question set, how much expert time the client must give for labeling and review, the number of user roles to test for permissions, and how many evaluation cycles run before launch. Recurring costs include re-running the test set after each model, prompt, or index change, and maintaining labels as documents change. Ask the partner to separate one-time setup from ongoing evaluation, and to state what the client must provide, such as subject matter reviewers and test accounts for each role.
Can our own team run permission and accuracy testing after handover?
Yes, if the platform exposes the data and configuration needed to test, and the client has someone who can own the test set. Open-source components such as Qdrant document API keys, JWT-based per-collection permissions and JSON audit logging of API operations, which give a team concrete points to test. The practical requirement is ownership: a named person must maintain the labeled questions, run the permission test users after every identity change, and review logged failures. Ask the partner what runbooks, scripts and test accounts will be handed over, what training is included, and whether a retainer for continuous testing is needed for the first months. The engagement should document each test so the client can repeat it without the partner.
Why the vector database and embedding model belong in the RFP
The vector store and embedding model decide where document-derived data lives, who can reach it and what it costs to run, so a partner should justify both choices in its response rather than treat them as a default. Ask the partner to tie its pick to your data volume, your permission model and the operations skills your team actually has. If the proposal names Qdrant, check the claims against the Qdrant installation documentation: Qdrant needs block-level storage with a POSIX-compatible file system and cannot run on NFS or S3-style object storage, and SSD or NVMe drives are recommended. Ask for the storage design in the proposal, including where the volumes sit in your cloud account or data center.
The security baseline matters as much as the storage choice. The Qdrant security documentation states that self-deployed instances listen on all network interfaces and have no authentication by default, so a partner must show how it configures API keys, TLS for REST and gRPC, and network restrictions before any document vectors are loaded. Qdrant's JWT-based access control supports per-collection read or write permissions, and its JSON audit logging records authenticated API operations, which is the evidence your security team will ask for. For a production cluster, the distributed deployment guidance recommends at least three nodes so quorum survives a node failure. Ask the partner to state its node count, replication factor and the storage cost that replication adds.
Ask the partner to name the embedding model, its license, the place it runs (your GPUs, a shared inference service, or a managed API) and whether any document text leaves your environment during embedding. Then ask how the choice is re-tested: which evaluation set is used, what triggers a re-embedding of the corpus, and how old vectors are kept comparable with new ones after a model change. Qdrant release v1.19.2 was published on October 5, 2026, so ask the partner which version it will deploy, how it will track upgrades and whether the upgrade plan covers snapshots taken before the change. Confirm all of this in writing, because a vague answer on embeddings usually means the retrieval quality will not be tested before go-live.
Which license limits apply to Dify and Open WebUI
Dify is released under the Dify Open Source License, a modified Apache License 2.0. The modification matters most for vendors and internal platform teams that plan to run Dify for more than one customer or business unit. The license forbids using the source code to operate a multi-tenant environment, where one tenant is one workspace, without written authorization. It also forbids removing or modifying the logo or copyright information in the Dify console. Reviewers should read the full text in the Dify LICENSE file rather than rely on a summary.
- Multi-tenant restriction: Running one Dify instance with several workspaces for separate customers or subsidiaries needs written authorization from the licensor.
- Logo and copyright retention: Branding in the console must stay as shipped unless the license position is settled in writing.
- Community edition limits: The self-hosted Community edition is free but limited to a single workspace, so it suits one internal team.
- Enterprise edition: The self-hosted Enterprise edition is custom priced and adds SSO, multiple workspaces, advanced security, a commercial license and professional support.
- Dify Cloud tiers: Cloud plans are listed separately on the pricing page, and they do not change the terms for a self-hosted build.
Ask the partner to confirm in writing which edition they recommend, which party holds the license relationship, and whether the planned workspace count fits the Community edition.
Since v0.6.6, Open WebUI code is distributed under the Open WebUI License, which adds a branding protection clause. Code through v0.6.5 remains under BSD-3-Clause, so the version a team deploys determines which terms apply. The branding clause forbids altering or removing Open WebUI branding in deployments that exceed 50 users in any rolling 30-day period, unless the operator holds an enterprise license or written contributor permission. The full terms are in the Open WebUI License documentation.
- User threshold: The 50-user limit counts users in any rolling 30-day period, so growth can cross it without a single planned rollout date.
- Branding changes: Above the threshold, custom branding or white-labeling requires an enterprise license or written permission.
- Enterprise license: Open WebUI offers enterprise licenses that allow white-labeling and custom branding, with dedicated support options.
- Pricing route: Pricing is not published. It is quoted after contacting enterprise sales with an expected seat count.
- Version pinning: Record the exact release in the deployment, since licensing terms differ across the 0.6.6 change.
Ask the partner to state in writing which tier applies, who holds the license, and how the position changes as user numbers grow or if the assistant is offered to customers as a service.
License positions can change after launch because user counts grow and assistants are reused for new audiences. For Open WebUI, the 50-user threshold is measured on a rolling basis, so an internal pilot can become a branding obligation with little warning. For Dify, the risk shifts from user count to workspace count and service model. Offering a RAG assistant to customers or running several client environments on one Dify instance can trigger the multi-tenant restriction even at modest user numbers. Both positions should be reviewed at each phase gate, not only at contract signing.
- Rolling measurement: Track active users per 30-day window so the threshold is visible before it is crossed.
- Workspace planning: Map each intended tenant or business unit to a workspace and check the count against the chosen Dify edition.
- Hosted service use: Assess whether the assistant will run for third parties, since that changes the Dify and Open WebUI analysis.
- Upgrade effects: Re-check the license file in each release, because terms and version boundaries can change.
- Contract record: Keep written authorizations, enterprise quotes and the license file version with the architecture decision record.
Ask the partner to produce a license register that lists each component, its version, the trigger points for review and the owner of each decision.
How a partner should scope re-indexing when documents change
Re-indexing keeps the assistant's answers aligned with the current document estate, including removals. The sequence below shows what the partner must write into scope at each step so that changes, deletions and stale answers can be traced and checked.
Detect source changes reliably
The partner documents how each source connector notices new, edited and deleted files, such as change timestamps, content hashes or a source system's change feed, and which sources only support full rescans. The scope names each connector, the trigger (scheduled run, event or manual), and the refresh frequency the client has agreed. Done means a test run on a sample source shows that an edit, a new file and a deletion each produce a logged change record.
Re-parse and re-chunk changed files
Only changed files are parsed again, with the parser, OCR settings and chunking rules written down for each file type, including how tables and scanned pages are handled. The partner records the chunk size, overlap and metadata carried into each chunk, such as source path, version, owner and permission tags. Done means a changed file produces a new chunk set with a version identifier, and the previous chunk set is marked for replacement.
Regenerate embeddings for new chunks
The scope names the embedding model and its version, and states that every chunk from a changed file is embedded again. If the embedding model changes, the partner must state whether the whole corpus is re-embedded, since mixed vector spaces in one collection produce unreliable retrieval. Done means each new chunk has a vector stored with the same metadata, and the count of chunks and vectors matches the parser output.
Update the index and name the vector store
The partner states which knowledge and vector configuration the platform uses. Dify has its own knowledge base settings and a default vector store (Weaviate) with alternatives, and Open WebUI has its own retrieval configuration with a choice of vector databases. The scope names the vector database, the collection or index structure, and how old chunk versions are replaced atomically so users never see a half-updated document. Done means a query returns the new chunk version and no older version of the same file.
Propagate deletions and erasure requests
When a source document is removed, or a data subject's erasure request covers it, the scope must state how the deletion reaches the parent record, every chunk, every vector, cached answers and any uploaded copy in platform storage. The partner names who triggers erasure, how long a deletion can take to reach all copies, and how backups and snapshots are handled. Done means a test document is removed and a search for its unique text returns nothing from the index, storage or cache.
Run a post-change retrieval check
After each refresh, the partner runs a fixed set of test questions tied to the changed documents and compares the retrieved sources and cited passages with expected answers. The scope defines the test set, the pass criteria agreed with the client, and who reviews failures. Done means a dated report lists each test question, the sources retrieved, and any failed items with a decision on whether to rerun the refresh or fix the source.
Detect and log stale answers
The scope explains how the assistant shows which source version each answer used, how answers that cite a superseded version are flagged, and how users can report outdated content. The partner records refresh timestamps and index versions in the audit log so reviewers can reconstruct which document state produced a given answer. Done means a sample answer can be traced to a source version and a refresh run in the logs.
How partners defend against prompt injection hidden in documents
Documents from wikis, email attachments and uploads can carry text written to steer the model, such as a sentence in a PDF telling the assistant to ignore its instructions or reveal other files. The defense is a set of layered controls, and no single filter stops this class of attack. Ask each partner to show the controls it builds, configures and tests, and to name the ones that remain with your team. A partner that answers with one product name, or with a claim that its model is safe, has not answered the question.
Start with separation. Ask how retrieved text is passed to the model: whether it is placed in a clearly delimited context block, labeled as untrusted data, and kept out of the system prompt. Then ask which input and output guardrails run, where they run and who owns their rules. Guardrails are more dependable when they are enforced at a gateway or guardrail layer between the application and the model, such as the self-hosted AI gateway in this pillar, rather than only inside the chat interface. Ask whether output checks can block answers that leak restricted content or contain links or instructions the policy does not allow. Confirm how each guardrail component is licensed and hosted before you rely on it.
Agents raise the stakes. If the assistant can call tools, send email, open web pages or write to other systems, an injected instruction can trigger an action rather than a bad answer. Ask the partner to list every tool and outbound network path, to restrict each to named functions with least-privilege credentials, and to require human approval for write actions. For Dify, ask how its code sandbox and outbound proxy are configured, and which SSRF settings block internal address ranges. Finally, ask how injection is tested: the partner should maintain a red-team test set of poisoned documents, run it before each release and after each re-index, and share the results. DeployOpen provides AI and agent security testing as a separate service, so you can scope that work independently. Confirm in writing which controls the implementation partner owns and which the testing provider validates.
Red flags that should end a partner conversation
Most weak RAG proposals share the same pattern: a confident answer on one of the hard questions, with no test, document or written boundary behind it. Each card below describes a claim you may hear, why it matters for a self-hosted assistant, and what to request before the conversation continues.
Permissions handled by the model
A partner who says the language model will "only answer what the user is allowed to see" has not designed retrieval filtering. Permissions must be enforced before chunks reach the prompt, using the source system's access groups copied into the index or checked at query time. Ask for the design document showing where the filter runs, how group changes propagate, and how a test user with restricted access is shown to receive no restricted chunks.
Accuracy claimed without a test set
Statements such as "the answers are highly accurate" carry no evidence. Ask for a written evaluation plan: a set of real questions drawn from your documents, expected source passages, graded answers for correctness and citation quality, and the threshold that must be met before go-live. The plan should also state who signs off on results and how failures are logged and retested after each change.
Vector store chosen without storage notes
A partner who names a vector database but cannot describe its storage, security defaults or scaling path is not ready to run it. Qdrant, for example, needs block storage and does not run on NFS or S3, and its self-deployed instances ship without authentication. Ask which store they propose, why, the storage class and sizing, the API key and TLS setup, and the backup and restore method.
License limits waved away
Phrases such as "it is all open source, so there are no limits" hide conditions that matter for commercial use. Dify's license restricts operating a multi-tenant environment without written authorization and restricts logo changes, while Open WebUI's license limits branding changes above 50 users in a rolling 30-day period. Ask for a written license review for each component, and for the partner to name which deployment would need a commercial license.
Re-indexing described as manual
If the answer to "how do new or changed documents reach the index" is "we will run the ingestion script when needed," stale answers will follow. Ask how change detection works, how deleted or superseded files are removed from the vector store, whether a document's old chunks and embeddings are purged, how a full rebuild is scheduled when the embedding model changes, and who monitors failed ingestion jobs.
No written exclusions
A proposal that promises everything and lists no exclusions usually hides scope gaps. Ask for a written list of what is not included, such as scanned-document OCR, source system connector development, prompt injection testing, model hosting, user training or ongoing tuning. Fixed-scope work should show each exclusion next to its deliverables, so the cost of any gap is visible before signing.
How to score partner responses
This table sets out how to score each partner answer on a three-level scale and which evidence to request for each area. Weight the permissions, retrieval testing and written scope rows most heavily, record every unanswered question as a named gap, and compare prices only after each bid has a written scope with named deliverables.
| Evaluation area | Strong answer (score 3) | Weak answer (score 1) | Evidence to request |
|---|---|---|---|
| Source permissions | Permissions are read from the source system at query time, filtered before ranking, and tested with users holding different rights | Access is set once per collection or copied at ingestion, with no test of revoked rights | Permission model diagram, test cases with expected denials, and a revocation test log |
| Retrieval and answer accuracy | A written test set with expected sources, scored retrieval and groundedness, and results repeated after each change | Accuracy is judged by demo questions or left to users to report | Sample test set, metric definitions, baseline results and the regression process |
| Vector store and embeddings | Named vector database and embedding model, chosen against sizing and language needs, with a documented reason for each | Product named without sizing, or the choice depends on a vendor not yet selected | Architecture note, sizing worksheet, storage class and backup approach for the index |
| Re-indexing and refresh | Change detection by source, incremental re-indexing, deletion of removed content from chunks and embeddings, and a stated refresh schedule | Full re-index on demand only, with no handling of deleted or moved files | Refresh runbook, deletion test results and the index version history |
| Prompt injection in documents | Untrusted document text is separated from instructions, output is filtered, and tests include injected content in sample files | Reliance on a system prompt alone, with no test cases for hostile documents | Test cases, guardrail configuration, and findings from an adversarial test run |
| Licensing and limits | Written review of each component license against the intended use, including user counts, multi-tenant use and branding rules | License is described as open source without review of usage limits | Written license matrix covering Dify and Open WebUI terms, with the limits that apply to the planned user count |
| Operations and logging | Logs of queries, sources cited and access decisions kept in the client's storage, with a retention period agreed | Logs are optional, stored in a vendor cloud or not described | Logging design, retention settings and a sample audit record |
| Written scope and deliverables | Named deliverables, acceptance criteria, exclusions and a timeline agreed in writing before price is compared | Price offered on a call or in a slide without deliverables | Signed statement of work draft with deliverables, acceptance tests and assumptions listed |
What buyers ask before hiring outside help for a RAG assistant
What drives the cost of a RAG assistant implementation?
The main drivers are the number of document sources, how complex the permission model is, how clean the documents are, and how deeply the answers are evaluated. Each source adds connector work, parsing and a mapping of who may see what. Permissions that follow a simple folder structure cost less to carry into answers than permissions that vary by document, matter, or business unit. Scanned PDFs, inconsistent templates and duplicate policies add cleanup before indexing. Evaluation depth matters as well: a small test set checked by hand costs less than a graded question set with repeated runs after each change. Ask the partner to itemize each of these in the written quote, because the number belongs to that scope, not to a generic estimate.
Which parts of a RAG assistant are one-time and which recur?
The initial build is one-time: platform setup, connectors, ingestion pipelines, permission mapping, integration with the identity system, and the first evaluation round. Recurring work includes re-indexing when documents change, retesting answers after model, prompt or platform updates, applying upgrades to the platform and the vector database, monitoring, and backups. Retainers usually cover the recurring part, and their scope should list response expectations, upgrade cadence and how many re-evaluation runs are included. Also ask who pays for model inference and hosting, since those costs are usually billed by the infrastructure owner rather than the implementation partner. The written quote should separate these lines so the recurring cost is visible before the build starts.
What does the client team need to provide for the engagement?
The client needs to supply access and decisions that only it can make. The most common inputs are:
- Read access or a service account for the identity system, so group membership can be mapped to source permissions.
- Named document owners for each source, who confirm which content is current and who may see it.
- A test question set with expected answers and the source documents that should support them, written by people who know the work.
- Decision makers for permissions, including rules for restricted material and who approves exceptions.
If these inputs arrive late, the schedule slips, so ask the partner to list them with owners and dates in the scope document.
Can our own engineers build and run a RAG assistant without a partner?
Often yes, if the team already runs containerized services, manages identity integration and has someone who can own answer quality. The open-source platforms covered on this page are documented and can be deployed by an experienced platform team. The harder parts are usually permission carry-over, evaluation and ongoing re-indexing, because they require repeated testing and documented decisions. Ask whether the team can staff those roles for the life of the system, not only the first release. A partner can handle the build, the handover documentation and a retainer for upgrades and retesting, while your team keeps operational control. Confirm the division of responsibilities in writing before choosing either path.
How long is an engagement scoped before work starts?
Most DeployOpen engagements are fixed-scope, and the scope, deliverables and timeline are agreed in writing before work begins. The timeline depends on the number of sources, the identity integration, the state of the documents and the evaluation work agreed in scope. The written scope should name milestones, the client inputs each milestone depends on, and what counts as acceptance. Ask for the milestone list and the dependencies rather than a single date, since a date without dependencies is not a plan. DeployOpen does not publish a price list, so cost and duration come from that written scope.
Does the license of the chosen platform change the cost or scope?
It can. Open WebUI is distributed under the Open WebUI License, which restricts altering or removing its branding in deployments above 50 users in any rolling 30-day period, unless the operator holds an enterprise license or written permission. Dify's license requires a commercial license to operate a multi-tenant service from its source code. If the assistant serves a large internal population or customers, the licensing review should happen before platform selection, and any enterprise license cost should appear as a separate line in the quote. Ask the partner for a written licensing note that matches your user count and deployment model, and have your legal team confirm it.
How should a partner show the assistant is accurate before go-live?
A credible partner should describe a test process that runs before go-live and after each significant change. The process typically includes a question set drawn from real work, expected source documents for each question, scoring of whether answers are correct and cited, and a record of failures with the decision taken on each. Ask whether the evaluation covers permission tests, such as confirming that a user without access to a restricted document never receives its content in an answer. Evaluation depth is a cost driver, so ask how many questions, how many scoring rounds and who signs off the results. The evidence should be kept in a form your auditors and risk team can review.
How DeployOpen scopes, delivers and supports RAG evaluations
DeployOpen is a Chainscore Labs company that plans, implements, integrates, hardens, documents and supports self-hosted open-source platforms inside the client's own infrastructure. For RAG knowledge assistant RFP questions, we turn each question into a written scope, test the answers against documented criteria, and hand over the evidence your evaluation team needs.
How we scope
- Written scope lists the document sources, connectors, file types and user groups in the assistant
- Permission mapping is documented for each source system and each identity provider involved
- Evaluation criteria for retrieval and answer accuracy are agreed before any build work starts
How we build
- Ingestion, chunking, embedding and vector storage are configured on the client's own infrastructure
- Retrieval tests and answer tests run against a reference question set agreed with the client
- Prompt injection tests on ingested documents are run and results recorded in a findings log
How we hand over
- Architecture, configuration and permission design are documented for the client's security and architecture teams
- Re-indexing, backup and restore procedures are written as runbooks the client's operators can follow
- Test results, known limits and license obligations for the chosen platform are delivered with the system
How we support
- Fixed-scope engagements are agreed in writing, with deliverables and timelines set before work begins
- Ongoing support, platform upgrades and continuous testing are available as a retainer
- Quotes follow from the written scope, so the client can compare partners on the same deliverables

