Hi all, I’m starting this thread in response to interest from @satikusala about using Tinderbox in conjunction with large language models (LLMs). I hope others will share ideas here as well.
I don’t think I’ll be able to match what @webline has done in terms of providing a ready-to-go solution, but maybe others will be able to build on the outlines I’m providing below.
What LLMs are doing for me
I’m a nonfiction author. I wanted to create an assistant that can pick up some of the tasks that slow me down and create bottlenecks. I wanted the assistant to have access to my notes and sources and stay focused on those rather than its own “knowledge.” So I build a system based on retrieval-augmented generation (RAG) and here’s what it is doing for me:
-
Finding similar notes. A stamp sends the note’s text to an LLM that has access to all my notes. The LLM performs a semantic similarity search and returns the top n results with a summary. The reply also sets up a way to link the found notes to the original note. (I also use Tinderbox’s own similar notes feature. So far there’s been some overlap but enough difference to keep me using both.)
-
Mapping notes. All my notes are in a vector database, organized by an LLM’s view of their semantic similarities. I can retrieve from that database my notes’ embeddings, which are numerical representations of each note’s text. Once these numbers are in Tinderbox, they can serve as $Xpos and $Ypos, and I can see how similar notes are clustered together. There’s an early example of this here.
-
Chat about my notes. I can have a conversation with an LLM about my notes entirely within Tinderbox. The chat is set up to use “memory” of previous turns in a given conversation (also stored in Tinderbox). Replies always include references to my own notes. But I can also set it up to have a conversation about any digital text. More on this below.
-
Summarization. A stamp collects all notes in a container or agent and sends them to an LLM with a request to summarize. The summary gets imported into the container’s $Text but it could go anywhere. Useful for summarizing all notes with a certain tag or all notes taken on a given source.
-
Tagging. A stamp collects a note’s $Text and all the tags currently in use in the document, then sends them to an LLM with a request for “zero-shot classification” (no training). The result is imported into the note’s $Tags for review.
-
Research via similarity search of full-text sources. Outside of Tinderbox, I can store any digital text in a vector database, broken down by paragraph. From within Tinderbox I can write a query that will retrieve results not just based on keywords but on semantic distance. For example, a query about ancient Greece and Rome will return paragraphs about Demosthenes even if the word “Greece” is not in the searched text. In other words, I can search for ideas and concepts rather than just keywords. And I can search really big texts. Within Tinderbox, I can import the search result’s metadata into attributes, organize the notes by the relevance score provided by the LLM, and filter out irrelevant results.
So what does this look like in practice? For me the biggest improvement to my workflow has been using chat to brainstorm. As I prepare to write a section, I describe what I plan to write and ask for notes that will support my ideas. I get a conversational summary that sometimes contains new connections and insights—all based on notes I already have. I can then go back and ask follow-up questions. Creating a plan for writing becomes a dialog.
One of my weaknesses as a writer is over-researching. Maybe it’s true you can never know too much, but you can have too many notes. For me, going from brainstorming to writing always included a tedious intermediate step of finding, reviewing, and gathering relevant notes, placing them in an outline, and then reviewing them again. All this has been made worse by my tendency to over-research and overthink.
Now I start a conversation. Even though I’m aware there’s no consciousness on the other side, the conversation keeps me in a creative thinking mode and away from the linearity of reading through notes and placing them in outlines. It presents my notes in a new way, giving me a fresh perspective. And it forces me to be clearer about what I want to say before the actual writing starts.
So that’s what I’m doing with LLMs and Tinderbox. The other part of the question is how, which I’ll get into in my next post!
Is anyone else integrating LLMs into their Tinderbox workflows? What does that look like?