
A customer says the answer invented a policy, or says the file they uploaded was ignored. Do not treat the reply as the chunk the search returned, and do not ask the model which passage it used, until you can name three things you stored. Name the chunk that search returned: the file id, the score, and the text. If the search stored no result, write that, including an empty list, and do not invent a sentence to fill the hole. Show a different file whose id or score is not this one. Show another store that does not hold this file. If any of the three needs the person who wired retrieval, you have not named the chunk. You have a paragraph and a guess.
This is the chunk on one search. It is not the citation. Which document did that citation name? is an index, a title, and a span on a generated answer. A citation can name a file the search result does not contain, and a file id is not an annotation index. It is not the embedding. Which embedding did that passage use? is a model name and a vector length. A vector length is not the text of the chunk. It is not the assistant. Which assistant did that thread name? is an assistant id and a model. An assistant can answer while this search stored a different file. It is not the trial a customer started, and it is not the role an invite granted. Those are different objects, and they are not this id.
None of what follows is a score for this customer's documents, and none of it is legal advice. The fields below are one vendor's current example of a vector-store search, and a second example on the same guide uses the same file id with a different sentence. The rates below that are a 2023 paper about other people's questions and other people's Wikipedia passages. A score on an example is not a census of your answers. A paper that places one relevant passage among distractors cannot name the chunk on the search you ran tonight. They do tell you which numbers people mix up when they try to sound precise about a passage they have not opened.
OpenAI's retrieval guide prints two results for one query, and the two files are not the same object. The query is How many woodchucks are allowed per passenger? 46 characters. The object is vector_store.search_results.page. The first file id is file-12345. 10 characters. The filename is woodchuck_policy.txt. 20 characters. The score is 0.85. The author attribute is Wildlife Department. 19 characters. The region is North America. 13 characters. The first text is According to the latest regulations, each passenger is allowed to carry up to two woodchucks. 93 characters. The second text on the same file is Ensure that the woodchucks are properly contained during transport. 67 characters. 93 is not 67. Two chunks on one file are not one chunk. The second file id is file-67890. 10 characters, the same length as the first id, and not the same string. The filename is transport_guidelines.txt. 24 characters. The score is 0.75. 0.85 minus 0.75 is 0.10, which the page does not print. The author is Transport Authority. 19 characters, the same length as Wildlife Department, and not the same string. The region is North America again. The same region is not the same file. The text is Passengers must adhere to the guidelines set forth by the Transport Authority regarding the transport of woodchucks. 116 characters. has_more is false. next_page is null. False is not an empty data array. The page says a response contains 10 results maximum by default, and that you can set up to 50. The sample data array has 2 items. 2 is not 10, and 2 is not 50 (OpenAI, Retrieval).
A later sample on the same guide uses the first file id and does not use the first sentence. The Go and Ruby formatting examples set file_id to file-12345 and filename to woodchuck_policy.txt, and the text is Each passenger may carry up to two woodchucks. 46 characters. 46 is the length of the query, and it is not the query. 46 is not 93. Do not paste the shorter sentence onto the JSON result because the file id matches. The quickstart above that search creates a vector store named Support FAQ. 11 characters. The uploaded file in that snippet is customer_policies.txt. 21 characters. 21 is not 20, and Support FAQ is not woodchuck_policy.txt. One of the search calls uses the id vs_123. 6 characters. 6 is not 10. A store id is not a file id. The ranking section names two rankers, auto and default-2024-08-21. The second name is 18 characters. score_threshold is between 0.0 and 1.0. 0.85 is inside that range. It is not the top of the range, and it is not 0. Chunking defaults are 800 tokens with 400 of overlap. 800 divided by 2 is 400, so the default overlap is exactly the maximum the page allows, which is half the chunk size. The allowed chunk size is 100 through 4096 inclusive. 800 is inside that range. 100 is the floor, not the default. A rewritten-query table shortens one question from 56 characters to 30, and another from 69 characters to 42. 56 minus 30 is 26, and 69 minus 42 is 27. The page does not print 26 or 27. A shorter query is not the chunk.
The reference sample is a third object, and its score is not 0.85. The search response example prints file_id as the string file_id. 7 characters. 7 is not 10. filename is the string filename. 8 characters. The text is the string text. 4 characters. The score is 0. attributes contain foo set to string. has_more is true. next_page is the string next_page. search_query is an array whose only element is the string string. 0 is not 0.85. true is not false. An array of one string is not the 46-character question. Do not copy 0 onto file-12345 because both pages were open, and do not copy 0.85 onto a schema example whose score is 0 (OpenAI, Search vector store).
The study people reach for when they want a retrieval accuracy is a different document, and its prose and its table do not print the same closed-book number. Nelson F. Liu, Kevin Lin, John Hewitt, Ashwin Paranjape, Michele Bevilacqua, Fabio Petroni, and Percy Liang place one relevant passage among distractors. They say passages are chunks of at most 100 tokens. 100 is the floor of the vendor chunk-size range above, and it is not the vendor default of 800. They experiment with 10, 20, and 30 documents, 2.7K examples each. 2.7K is not 10, and 10 documents is not the 10-result default on a search page. The prose says GPT-3.5-Turbo and GPT-3.5-Turbo (16K) have the highest closed-book performance at 55% and the highest oracle performance at 88%. The appendix table prints 56.1% closed-book and 88.3 oracle for GPT-3.5-Turbo. 55 is not 56.1. 88 is not 88.3. A later sentence uses 56.1% as the closed-book figure the middle of the context falls below. The same model can be given three different closed-book phrasings in one paper. Do not pick the one that sounds tighter and call it the chunk (Liu, Lin, Hewitt, Paranjape, Bevilacqua, Petroni, and Liang, Lost in the Middle: How Language Models Use Long Contexts).
The same paper's position results are a different scale from a similarity score. It says multi-document performance can drop by more than 20%, and that the low point in the 20-document and 30-document settings is below the closed-book 56.1%. The lowest performance it names in the 20-document setting is 52.9%, when the relevant document is 10th of 20. 56.1 minus 52.9 is 3.2, which is not more than 20, and the page does not print 3.2. The extended-context model at 10th of 30 is 49.5%. 56.1 minus 49.5 is 6.6, which the page does not print, and 6.6 is not more than 20 either. The more-than-20 sentence and the 52.9 sentence are both in the paper. They are not the same subtraction. In the open-domain case study, using more than 20 retrieved documents improves performance by about 1.5% for GPT-3.5-Turbo and about 1% for Claude-1.3. 1.5 is not 1, and neither is 0.85. A gain on other people's questions is not the score on this file. 0.85 is not 56.1, and 0.75 is not 52.9.
Do the three proofs on one real search, in the store that actually holds it. First, the binding. Copy the file id, the score, and the text. If the data array is empty, write that. Do not infer file-12345 because a sample prints it, and do not infer the 93-character sentence because a guide prints it. If the same file id appears with two texts, write both, and write which one you showed the customer. The 46-character sentence is not the 93-character sentence. Second, the other file. A different file id, with a different score, is not this one. file-12345 and file-67890 are that shape on the sample page, and they are still samples. A chart of 2.7K other examples is not that second file. If you cannot show a file that is not this chunk, you have a counter, not a record. Third, the other store. A list that belongs to someone else does not contain this file id. If the only store is a single shared index and you cannot say whose chunk it is, write that. A tenant you cannot name is the finding. It is not a reason to tell the customer the score was 0.85.
Three moves feel like the proof and are a second problem. Rewriting the query, or raising the score threshold, because the chunk was embarrassing, before you have copied the id. The new search is a new fact. It does not tell you what the previous text was if you did not copy it. Quoting 56.1% or 52.9% because one of them looks precise, while the search you were asked about is one row, and the questions that produced those figures had not opened your store. Asking the model which chunk it used. The model will produce another paragraph. It will not open the log. A citation you have not kept, while the customer is arguing about a footnote, is which document did that citation name?. Opening that screen does not name this chunk's text.
The path is ordinary when an operator can open one customer's documents without opening the next customer's documents as the way to prove it. Haystack is a search layer across documents, data lakes, and repositories, with indexing so a new document can be found. The shape that matters here is one customer's documents you can point at, in a store you administer, distinct from the next customer's documents. That case is not a chunk ledger. Nothing in the description is a headcount, a duration, or a result figure. If the only control on the screen shows a query and will not name a file id, you do not have this proof. You have a paragraph.
There is a version of this afternoon where a rescue is the wrong purchase. Nothing is in production. No model is being called. The request was not logged. A customer has already seen another customer's documents. Naming a file id does not close a leak. The wrong value was already a write. Or no metric was ever named. A paper's 56.1% will not answer that. 0.85 on a sample is not your chunk, and 100 tokens in a paper is not your chunk, and 800 on a default is not your chunk.
When the search is real and the log cannot name the chunk, the missing object is specific. A record, in a store you administer, that shows one file id, one score, and one text, or an explicit empty result, shows a different file that is not that chunk, and shows another store without it. The audit that says what is salvageable is the first one to two weeks of a rescue. The engagement that finishes the pilot is eight to twelve weeks, scoped after that audit, not before it. If the agreed metric is missed, the build is unpaid. Rollout stays behind a human-review gate. An AI pilot failed to reach production is the page for that shape. A startup software development company is a different buyer, and a white label software development partner is a different buyer again. If you do not yet know which store holds the file, a two-week AI readiness assessment maps the systems. The findings are yours. They are not a promise that a paper's 52.9% applies, and they are not 0.85.
The trial a customer started, and the role an invite granted, are different objects: which trial did that customer start? and which role did that invite grant?. Do not record either on this page. A trial end is not a score. A role name is not a file id.
Before you tell them the search returned that passage, do the three proofs and write the id. Name the file, the score, and the text, or write that the search stored no chunk. Show a different file that is not that chunk. Show another store that does not hold it. Do not paste a sample sentence onto an empty list, and do not ask the model which of the texts it was. A paper can tell you how a model used other people's passages, including the 55 that is not 56.1. The binding is the chunk you can defend.
Questions
You stop treating the reply as the chunk the search returned, and you stop asking the model which passage it used, until you can name the file id, the score, and the text, show a different file whose id or score is not this one, and show that another store does not hold it. If the search stored an empty result, write that.
No. An accuracy on other people's questions is not the file id on this search. A chunk you can defend is the file id, the score, and the text, or a written line that the result was empty. 56.1 on one table is not 0.85, and 100 tokens in a paper is not a file id.
When nothing is in production, when no model is being called, when the request was not logged, when a customer has already seen another customer's documents, when the wrong value was already a write, or when no metric was ever named.
Related: AI pilot failed to reach production
Find this useful? Tell Google to show you more of it.
