Bonsai-27B-GGUF
lmstudio-community · Kit
A GGUF conversion of the 27B Bonsai model for LM Studio, with a 3.80 GB Q1_0 language file and a 0.93 GB BF16 vision projector. Tested for text, vision and par…
An n8n workflow that answers questions about a PDF and shows where each answer came from. Each reply ends with the file name and line range of every Pinecone piece the OpenAI model used.
PDF chat that cites its sources from Pinecone is an n8n workflow in the Research category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.
Chat message
Two things start it. Pressing Execute workflow loads the PDF into Pinecone. A message in n8n’s chat asks a question, and the trigger reads:
A chat reply with the answer and a citation for each piece used, made of the file name and a line range
What you need before you start.
File source
Holds the PDF the workflow downloads.
NeedsGoogle account linked through n8n’s Google sign-in, and the share link of the PDF
Vector store
Stores the pieces of the PDF with their file name and finds the closest ones to a question.
NeedsPinecone API key and an index with 1536 dimensions
Embeddings and answers
Turns text into vectors and writes the answer and the list of pieces it used.
NeedsOpenAI API key
Checked by Mindket on 13 Nov 2026
This n8n workflow answers questions about a PDF and says where each answer came from. One run loads the PDF from Google Drive into Pinecone. In the chat, an OpenAI model answers from the four closest pieces and reports which ones it used. The workflow turns those into a file name and a line range. Eighteen nodes do the work, plus four sticky notes.
People who need to check an answer against its source, such as researchers, editors and reviewers. It is made for people who already use n8n, OpenAI and Pinecone. Skip it if you want plain answers, since every reply here ends with a line of citations.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Research | Analysts | Ask a paper a question and see which lines back the answer | An analyst asks what a study found and reads the cited lines. |
| Legal | Paralegals | Find a clause and where it sits | A paralegal asks about termination and gets the lines to open. |
| Publishing | Editors | Check a fact in a manuscript | An editor asks where a date appears and follows the citation. |
| Support | Support teams | Answer from a manual and show the source | An agent asks how to reset a device and sends the cited lines with the reply. |
You need some n8n: import a file, add three credentials and make a Pinecone index.
Any n8n that can reach Google, OpenAI and Pinecone will run it. The chat is n8n’s own, so it needs no other app.
Download file with a node that fetches a PDF from elsewhereCompose citationsDownload saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Setup is three credentials, a Drive link and one Pinecone index.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| OpenAI | An API key |
| An account that can open your PDF, linked through n8n’s Google sign-in | |
| Pinecone | An account, an API key and an index with 1536 dimensions |
workflow.json.OpenAI Chat Model, Embeddings OpenAI and Embeddings OpenAI2.Download file.Set file URL in Google Drive, replace the whole value with the share link of your PDF.Add to Pinecone vector store and Get top chunks matching query.Press Execute workflow once to load the PDF, then open the chat and ask. A reply is the answer, followed by a line such as [report.pdf, lines 12-30] for each piece used. Load only once, since a second load adds the same pieces again.
| To change | Where |
|---|---|
| Which PDF it loads | The link in Set file URL in Google Drive |
| How many pieces the model sees | The chunks value in Set max chunks to send to model |
| How big a piece is | The chunk size and the overlap in Recursive Character Text Splitter |
| The look of a citation | The expression in Compose citations |
| The model | OpenAI Chat Model |
You load a contract and ask when either side may end it.
The chat replies with the answer and a citation such as the file name and a line range for each piece used. Open the cited lines before you rely on the answer, since a model chose them.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. A vector store keeps text as lists of numbers that stand for meaning, so it can find the pieces closest to a question. A model then writes the answer and says which pieces it used.
For experts. Loading runs Set file URL in Google Drive, Download file, Add in metadata and Add to Pinecone vector store. Asking runs Set max chunks to send to model and Get top chunks matching query. Prepare chunks then numbers the pieces. Answer the query based on chunks returns an answer and chunk numbers through a Structured Output Parser. Compose citations and Generate response build the reply.
| Node | What it does | What to know |
|---|---|---|
Get top chunks matching query | Finds the closest pieces in Pinecone | It embeds the question with Embeddings OpenAI2 |
Prepare chunks | Numbers the pieces from 0 and joins them into one block | The model cites those numbers |
Answer the query based on chunks | Asks the model for an answer and the numbers it used | The parser forces that shape |
Compose citations | Turns each number into a file name and a line range | Mindket’s copy fixes the lookup and skips a number with no piece |
Generate response | Joins the answer and the citations | The text goes back to the chat |
Add to Pinecone vector store | Stores the pieces with the file name and link | It never clears anything, so a second load adds copies |
The original copy failed whenever the model cited more than one piece, and loading twice adds every piece again.
Compose citations asked for one entry named by the whole list of numbers. That worked for one citation and failed for two or more. Mindket’s copy reads one entry per number and skips a number with no piecegpt-5-mini, the chat node’s default, for shutdown on 11 December 2026 with gpt-5.6-terra as the replacement. The chain has no tools, so Mindket’s copy uses it. The embeddings nodes used text-embedding-ada-002 by default. They now use text-embedding-3-small, which has the same size, 1536. Load again if your index holds vectors from the old modelAn n8n workflow that answers questions about a PDF and names where each answer came from. One run loads a PDF from Google Drive
into Pinecone. In the chat, each reply ends with a citation for every piece the model used.
workflow.json: the workflow as n8n exports it, 22 nodes, four of them sticky notes. It holds no credential. Of the notes,README.md: these notes.Set file URL in Google Drive pointed at one public file and had a space in front of it. It is now a<GOOGLE_DRIVE_FILE_ID>, that you replace with your own link. The try-it note and the small note beside the nodeCompose citations read [$json.citations], which asks for the entry at a position named by the whole list of numbers. With oneanswer and citations as required, so a reply without citations fails at theOpenAI Chat Model had no model set, so it used n8n's default, gpt-5-mini. It is now set to gpt-5.6-terra.text-embedding-ada-002. They are now set to text-embedding-3-small, whichworkflow.json.OpenAI Chat Model, Embeddings OpenAI and Embeddings OpenAI2.Download file.Set file URL in Google Drive, replace the whole value with the share link of your PDF. In Drive, open the PDF, choose ShareAdd to Pinecone vector store and in Get top chunks matching query. Both nodes must use the same index.Loading, started by hand:
Set file URL in Google Drive holds the link in a field named file_url, and Download file fetches that file.Add in metadata copies the file name, its extension and the link onto the item.Add to Pinecone vector store takes the file through Default Data Loader as binary data. The loader keeps the file name andRecursive Character Text Splitter cuts the text into pieces of 3,000 characters that overlap by 200.Embeddings OpenAI turns each piece into a vector.Asking, started from the chat:
Set max chunks to send to model adds a field chunks with the value 4.Get top chunks matching query embeds your question with Embeddings OpenAI2 and asks Pinecone for that many pieces.Prepare chunks numbers the pieces from 0 and joins them into one block of text, headed --- CHUNK 0 --- and so on.Answer the query based on chunks gives the block and your question to OpenAI Chat Model. The Structured Output Parser makes theanswer and a list of the chunk numbers it used.Compose citations turns each number into the file name and the line range of that piece, such as [report.pdf, lines 12-30].Generate response joins the answer and the citations into the text that comes back in the chat.Set file URL in Google Drive.chunks value in Set max chunks to send to model.Recursive Character Text Splitter. Load again after a change.Answer the query based on chunks.Compose citations.OpenAI Chat Model.gpt-5-mini for shutdown on 11 December 2026 withgpt-5.6-terra as the replacement. The chain has no tools, so Mindket's copy uses gpt-5.6-terra. The page does not listtext-embedding-ada-002. The new embeddings model gives vectors that do not mix with the old one's, so load again if your indexNOTICE.md 638 B README.md 6 KB workflow.json 15 KB
lmstudio-community · Kit
A GGUF conversion of the 27B Bonsai model for LM Studio, with a 3.80 GB Q1_0 language file and a 0.93 GB BF16 vision projector. Tested for text, vision and par…
LibertAIDAI · Kit
Runs DeepSeek-V4.1-Flash-1017 as a 2.9 bits-per-weight EXL3 quantization, a 196 GiB copy for people serving large models on their own hardware. Perplexity stay…
facebook · Kit
Generates short music clips from a text description or an audio prompt, in the small checkpoint of facebook's MusicGen. It suits developers and music hobbyists…
AbdomenAtlas · Kit
Detects and outlines tumors in 9 organs on CT scans, trained with the R-Super method that learns from radiology reports. A research model for medical imaging g…
dBenf · Kit
Answers typed questions about satellite image patches from all 12 Sentinel-2 bands, returning a probability for each option without writing text. A Qwen3.5-0.8…
zimmerk4 · Kit
Plays the full game Getting Over It from the bottom to the end with a small trained policy network that learned inside a JAX physics simulator. For reinforceme…