Adapting A.I. Servers to Suit Users’ Needs

As I continue to study my experimental home R&D A.I. server (https://ai.sauer.studio/), users of the system keep asking it questions that would be much better suited to search engines — such as, for instance, the open hours of a local business. My system wasn’t designed to answer those sorts of questions; I’m running a locally-hosted LLM, one much smaller (and therefore more environmentally sustainable) than those of Anthropic Claude, or ChatGPT, or Google Gemini. But I’m upset by my realization that users really don’t know how to use an A.I. effectively.

Sauer Studio A.I. website screen shot

I’ve studied A.I.s in depth in the past few years, and so I know well that A.I.s are more like “little Wikipedias” than “Googles.” They are built upon a collection of documents (generally at a relatively introductory level, and often at least a year out of date—sometimes more). So they’re not good at detailed expertise, local, or time-sensitive queries. Even the largest generative AIs (which support trillions of parameters, whereas ours consists of only 27 billion) aren’t great at such prompts. Asking “wrong” questions — such as news about the U.S./Iran war, or information about local venues, or details about people who aren’t famous — increases the likelihood of hallucination (incorrect answers), enormously.

Ursula Le Guin, in her 1969 novel The Left Hand of Darkness, has a wise character explain to our narrator “the perfect uselessness of knowing the answer to the wrong question.” I believe there is great wisdom in understanding what and how to ask a source, when researching (as my friends in ‘prompt engineering’ have studied for a while). It means, often, knowing how to best use tools. Le Guin’s novel points out something reflected in my own experience, from decades of library and archival research — no matter how much we might want a single all-encompassing knowledge source, that’s not how real knowledges usually operate. That’s why I trust my university library’s several hundred specific research databases more than Google Scholar.

Robert Pirsig, in his 1974 fictionalized autobiography Zen and the Art of Motorcycle Maintenance raises a similar concept, when he discusses “Mu,” a term he takes from Zen Buddhism. In his telling, “Mu” is an answer designed to negate a bad question. It isn’t a “yes” or a “no,” he argues, but instead a pointed rejection of implicit assumptions within a question itself. He suggests we should all think about answering some questions that way; this week, I wish generative A.I.s were able to do that. I often believe literature contains wisdom I wish 2026 users of generative A.I. had more easily at hand.

But (and here’s the difficulty of building server technologies). It’s easier to change my server, than to change people. (People don’t want to change.) You can tell this by the fact that Le Guin’s and Pirsig’s books aren’t widely read today, and that their contributions, though perhaps recognized five decades ago, haven’t become central to our thinking today.

So. After considering the problem for a while, I decided that I probably should just add a full Internet search engine to the little Linux server I keep in my home laundry room.

I needed my own Google — sort of.

So this morning, I built one. It took about half an hour to launch a comprehensive Internet search engine.

(If that sounds difficult, you should really read about how amazing modern open source containerization technologies are.)

Sauer Studio Search website screen shot

I couldn’t just have my A.I. rely on search APIs offered by Google, DuckDuckGo, Bing, or Wikipedia. Those organizations provide limited access to users, but a local AI needs lots of access — more than companies generally offer to rivals (even small ones, such as my own little site). My site could negotiate long-term contracts with existing search engines, paying monthly fees for our usage. But I didn’t want that. I’d rather run my own search engine; that’s part of the whole point of locally-hosted servers.

So I’ve launched “Sauer Studio Search,” as I call it (at https://search.sauer.studio/). It really only took a half-hour to launch, since it’s just an implementation on Linux/Docker of the open source metasearch system SearXNG. (When you understand modern cloud computing and know the rich, open source ecosystem to stand upon the shoulders of, this sort of thing is easier than it sounds.)

I then connected Sauer Studio A.I. to this search engine, and turned on my Open-WebUI server’s “Web Search” feature, to consult my local search engine, by default. Now, when you ask my A.I. a question about any topic, when the internal LLM decides that it doesn’t know enough about a user’s query, it will search Internet web pages, read top ten results, and use the information from those pages to inform its answers.

This will fundamentally transform Sauer Search A.I., from a small, local knowledge base to one informed by the entire Web. (I just searched the A.I. for information about a small, family-owned doughnut shop near my neighborhood high school, and it answered well.) But I wish that our users understood the implications of such a setting. Web Search will lower my A.I.s use of specific, detailed, local knowledge bases in its answers (it may prefer general information from the Internet). And such settings are important to every research tool in the modern world. I make this choice hesitantly, but it seems the better way to cope with users who ask “bad questions.” I think this will allow people who try my system to get answers more in keeping with those from corporate frontier genAIs. I wish I could teach users, as bibliographic instruction specialists at research libraries used to; but so far, people just want everything in one place. As unwise as that may be.

I should be clear that I’m not trying to “shame” any users. I don’t think the behaviors I’m seeing among A.I. users come from laziness or sloppiness, or any personal failing of individuals. Instead, the issue comes from larger social knowledge about generative A.I.s, their internal knowledge ideologies, and how they connect to information repositories. I think we should work, as a field, to improve that general understanding, by educating everyone, as generative A.I.s become more widespread.

I will work to customize the search engine over the next few weeks, adjusting the sources it consults for answers. All search engines have ideologies — those of you who know me in person have heard diatribes against choices like those made by Google. This one will have impeccable privacy for users. It will show “Lake Ontario” on its map (to follow International Hydrographic Organization Technical Resolution A.4.2.6. and the United Nations Resolution on the Standardization of Geographical Names guidelines). And in the process, I’ll learn more practically how the ‘guts’ inside modern Internet search engines really work.

Sauer Studio Search website map of Lake Ontario screen shot

You can give it a try, if you want. https://search.sauer.studio/. (It seems to be working nicely.) And if you use Sauer Studio A.I., it now can search the Internet when it suspects its internal knowledge base isn’t complete.

So. Win win? In a way. Sort of.

A Sleepless Night from Generative A.I.

Geoff, his head on his keyboard, miserable.

So. I had a difficult weekend, working on a collaborative research project using an open-source generative A.I. server I’ve built with a small research team (https://ai.sauer.studio/) in the laundry room of my house.

Today, I seem to have dug myself out of the hole? I survived, and I’ve learned something from the experience.

Those of you who read my posts know that I’ve been generally very pleased by open-source generative A.I. LLM systems. I’ve been convinced that they’re an excellent alternative to soulless environment-destroying, intellectual-property-abusing, mediocrity-inspiring, and prosaic corporate generative A.I.s.

I have been upset since last Friday, however, when I discovered that my own prototype alternative system wasn’t as smart as I’d thought.

It was having trouble parsing some actual student prompts, gathered during a usability-testing session run by a colleague and friend. The system just provided incorrect, incomplete answers to one of the student questions. In thirty variants of LLM and temperature settings, almost none of the system’s answers was substantially correct.

Sigh.

As a result, I didn’t sleep well on Friday night. I’m collaborating with teammates on this research, and we’d committed six months already to this technology. If it didn’t work, we could still report negative results, but I didn’t want to. The system had worked so well, at first. I feared I’d be letting my entire team down.

I was unhappy-worried.

TL;DR

Problem: Open‑WebUI’s default RAG setup gave spotty answers for graduate‑student queries about the TTU English Graduate Handbook.

Fix: I swapped the default RAG retriever for Apache Tika, bumped the retrieval top‑K from 4 to 10, and crafted a longer, more detailed RAG engine prompt.

Result: Accuracy jumps from “slightly useful” to “highly reliable” for real‑world student questions.

The Context: Why RAG Matters for Students

Graduate students often need quick, reliable answers to procedural questions—deadlines, funding policies, coursework requirements. I have found in recent years, at two universities, that PDF handbooks do not tend to be understood very well by graduate students; they’re just not confident that they understand the system which governs them. I’d theorized (widely, on social media) that a small, free, open-source LLM backed by Retrieval‑Augmented Generation (RAG) could pull up‑to‑date information from institutional documents, making the model a friend who answers any question they have, behaving like a living FAQ. 

Open‑WebUI is a popular open‑source front‑end that bundles a powerful LLM (e.g., ChatGPT‑like) with a simple RAG pipeline. By default, it uses a lightweight retriever and a modest top‑K of 4 passages. That works great for general knowledge, but when you ask the system to pull from a specialized, dense text like the TTU English Graduate Handbook, my research team and I found the answers begin to drift. The LLM can especially be distracted by errant words, spelling errors, and grammatical errors in the users’ prompts.

The Symptom: Inexact Answers

When I ran a test suite of actual graduate‑student prompts—things with unclear elements, spelling and grammar errors, such as “Does Texas Tech’s PhD Program in Technical Communication and Rhetoric give a sequence of exams and [sic] to receive the degree and what are the consequences if these milestones are not met?” the default Open‑WebUI configuration produced responses that were nearly correct but often missed key details about the third-year qualifying exam (the only event marked in the text as an exam).

Why? 

Sparse Retrieval – The default retriever (a simple TF-IDF and BM25) only fetched 4 passages (the default “top K” setting). The Handbook is long; the relevant snippet can be buried among many others.

Shallow Prompt – The prompt given to the language model was short, lacking explicit instructions to synthesize information from the retrieved passages.

Engine Limitations – The default embedding model wasn’t tuned for legal or procedural text, so the ranking was sub‑optimal.

The Fix: A Three‑Step Customization

Replace the Default Retriever with Apache Tika

As I lay in bed, sleepless (I’d spent six months on this prototype!), I remembered a conversation with an expert who’d been very dissatisfied themselves a few months ago with the Open-WebUI RAG settings.

I remembered, from that conversation, that Apache’s open-source Tika is a more robust content extraction framework that can parse PDFs, Word docs, and many other formats, converting them into a format easily accessible by the LLM’s vector databases. On Saturday, by adding a Tika container to the same Docker network as the Open-WebUI frontend, then re-feeding Tika‑cleaned PDF documents into the embedding pipeline, I was able to reduce noise and improve retrieval quality significantly.

Adding to the RAG Top K

Retrieving more passages also gives the language model a richer context pool. So I adjusted the RAG parser’s top‑K from the default value (4) to 10. This consumed more high-speed RAM (as did the Tika container), but now the model can cross‑check facts across multiple snippets, reducing hallucination still further.

Adjusting the RAG System Prompt

I also lengthened the system prompt Open-WebUI uses when engaging with RAG content, adding details to its default text to ensure that it considers the source PDFs more carefully.

After deploying the above changes, I reran the same graduate‑student prompts. Amazingly, it worked!

(You aren’t likely to be amazed. You’re probably either not understanding this technical jargon at all, or you understand it so well you’re shaking your head that I didn’t think of it right away. But I’m sharing the level of expertise I have, without shame, hoping it can help those who haven’t faced quite this problem to benefit without any need for your worry.)

After this fix, the model consistently cited the correct passage, reducing its guessing.

My team and I will spend the next few weeks coding several hundred AI-generated answers to student prompts, but I’m now much more confident in our system’s ability to help students. (And I’m sleeping better!)

Take‑Away Tips

Document Pre‑Processing Matters – If you’re using an open-source LLM server, consider adding a robust parser (Tika, PyMuPDF) to clean PDFs before embedding.

Top‑K is a Trade‑off – 10 is a sweet spot for medium‑sized handbooks; adjust based on document size and latency tolerance. 

Prompt Engineering is Important – Explicit instructions in the RAG system prompt drastically improve answer quality.

Iterate with Real Users – When building any open-source LLM solution, always test with actual student queries, then don’t be afraid to refine the system’s settings, based on feedback. It may take more fine-tuning than most English faculty are used to — but we live in a new world, and debugging scholarly tools isn’t entirely unlike revising our scholarly writing.

Conclusions

Open‑WebUI is a powerful foundation for building an institutional FAQ system, but the default RAG pipeline isn’t always “plug‑and‑play” for specialized documents like graduate handbooks. By swapping in Apache Tika, increasing the top‑K to 10, and giving the RAG engine a clearer, longer prompt, it may be possible to transform a “good enough” assistant into a trusted resource for your student community.

But thinking back on the experience, I remember how dismissive I’d been of the conversation with a colleague a few months ago, when they’d reported issues with the default RAG engine. It worked fine for me, didn’t it?

I see, now, that I’d not wanted to consider my colleague’s experiences, in part because I was afraid I’d have to do the complex work of adjusting the server containerization, and add an additional piece of software into the complex flowchart of how my system already worked. That led me not to want to consider their story.

But best practices don’t result from what I want. They come from consistent, quality results.

It was only later, reflecting on why I was facing failure, that I considered properly what my colleague had said. It was then that I needed to remember, in detail, the complex solution they had described solved the issue for them. Today I thank goodness I’d not let my fear of their experience cause me to “zone out” as they spoke; because I paid attention at the time to the details of their solution, even if I doubted it applied to me, I was able to recognize its significance when I needed to. Later, I realized it really, really did apply to my case. Only because I’d been lucky, paying attention to a newly-emerging community of experts, could I possibly have solved this problem.

Now we’ll be able to complete our study, report very positive findings at the SIGDOC conference next month, and write our results for peer-reviewed publication.

Happy building—and may your graduate students always find the answers they need!

Travails

Over the past three weeks, I encountered several technical challenges while working on my Sauer Studio A.I. project. If you haven’t read my earlier posts, in 2024 I created an open-source generative AI server to support my research, because the largest number of existing genAI servers today this sort of setup (though most published research has focused on cloud-based services like ChatGPT, Claude, or Gemini). Too few people are even aware of how capable open-source alternatives already are, I feared.

Exploring the Open-WebUI Interface

As part of my studies, I experimented with various settings in the Open-WebUI front-end web server, to optimize my genAI models’ performance. These included:

  • Turning administrative features on and off, such as “Tags Generation,” “Autocomplete Generation,” “Retrieval Query Generation,” and “Web Search Query Generation.”
  • Adjusting model parameters like context size (short-term memory), temperature (creativity level), and max_tokens (response deliberation time).
  • Upgrading the Open-WebUI application multiple times.
  • Testing whether allowing the genAI to search the internet or preload specific documentation sets would improve results.

Performance Decline and Troubleshooting

Despite these efforts, the system’s performance deteriorated over time. Responses became increasingly slow, and answers to previously correct questions became vague and less specific. I tried numerous fixes:

  • Disabling the Content Moderation Filter.
  • Adjusting context window sizes and token settings.
  • Reinstalling older versions of Open-WebUI.

Nothing worked. I felt discouraged, questioning whether the system had ever performed as well as I initially believed.

Additional Setbacks

At the same time, my open-source Certbot (which generates SSL certificates for my websites) crashed without clear error messages, affecting all sauer.studio domains. Coupled with disturbing national news, I was tempted to doubt myself entirely, including my ability to manage a modern container-based AI server (even after 30 years of web hosting experience).

I felt overwhelmed. I felt guilty about this failure’s implications for my first research study’s coauthors, and for the 28 scholars worldwide who’d created accounts on Sauer Studio A.I.

Solution Found

After reinstalling the newer Open-WebUI version and extensive research, I finally resolved the issue by turning off the four administrative settings mentioned at the top of this post. This restored the system’s performance, and I quickly fixed the SSL certificate problem as well. Now, everything runs smoothly, just in time for user testing.

Lessons Learned

This experience coould teach me one of two lessons:

  • Perhaps it’s better to use established cloud-based services like ChatGPT instead of building local alternatives. While this approach may have ethical concerns and limited customization options, it would probably offer stability.

or

  • Academics need to thoroughly explore AI server settings and configurations before publishing research. Hands-on experimentation is crucial for understanding these technologies fully.

Future Plans

I’ve chosen the second lesson as my guiding principle. I believe that mastering new technologies requires extensive exploration of their underlying infrastructure. Moving forward, I plan to enhance our project with more resources and personnel. It’s only through trial and error that I now truly grasp concepts like “tags generation” or “retrieval query generation.” This hands-on approach has deepened my understanding of LLM genAI technology.

I suspect all scholars who study generative A.I.s would do well to spend detailed time learning everything we can about these technologies, so we’ll be able as a community to help our discipline think about how to professionalize any widespread use of emerging technologies like these.

Building a Generative A.I.

Building an experimental Generative AI server this summer has been fascinating. As of this week, 16 people are using it. Over the summer, I’ve fine-tuned it quite a bit, and it’s much smarter now than it was when we began.

I still believe these systems are mediocre writers, and a genuine threat to student learning about writing and coding. But I now understand their workings in detail, and am ready to research how universities ought to employ this tech in the near future.
Just ignoring them (or reading Atlantic articles) isn’t a good plan. Though there is absolutely an AI “bubble”/media fad, LLMs are nevertheless real technology. They won’t go away. Just pretending our students won’t use them is naïve.

However, I need to clean up the aluminum-foil-and-chewing-gum apparatus I built in my laundry room to run this, as I transition toward a more substantial AI server setup, one based on this proof-of-concept.
So: if you haven’t tried it yet, please feel free to sign up. But I’ll now plan a replacement future system, run directly from the Texas Tech English Media Lab this fall:
https://ai.sauer.studio/


(Click the ‘sign up’ link below the login form to make an account. Use your real name and email, and I’ll activate you.)

So. I broke my AI server yesterday.
Destroyed it, really—with punctuation marks.
Greek myths had taught me, when I was young, about the danger of hubris. Forgetting that lesson, in a moment of excitement, I decided to try something fancy with the ‘config.py’ file on my experimental site.
And I broke it. Completely. Because of a syntax error in the Python code, it wouldn’t restart without crashing, every time. And it would crash each time before I could remove my edits from the .py file. Damn! It was almost certainly just a misplaced quotation mark or semicolon.

Luckily, we live in a world of containerization. I find Docker to be indefensibly badly documented and far too difficult to configure and use, but it does have some advantages when you set it up correctly.

I had a complete ‘snapshot’ of my AI server, from just hours before. Though I didn’t have the energy last night to do the command-line work necessary to restore it, this morning I got a cup of coffee, restored the backup, and https://ai.sauer.studio is now running again, exactly as it had been yesterday morning. Zero data lost—just some downtime. (Sorry to anyone annoyed by the outage.)
And I suppose I’ve learned a lesson?
At least I’ve been reminded of one I had already learned.

Here are some of the questions I’ve been trying with my experimental A.I. this week, as I work to create a usable chat interface to graduate student handbooks (and other large documentation sets). Note how it provides citations, with links to the source PDFs. And it’s all locally hosted and fully open-source! No corporate servers needed.

It looks promising! My early adjustments to the model’s ‘context’ and ‘temperature’ seem to generate usable answers. The lower temperature has meant no hallucinations, so far!

Next steps: IRB approval, then empirical, quantitative, replicable research with real users. And possibly—funding for a faster, more capable server?

EXAMPLES:

Q: When do I take my qualifying exams?
A: According to the documentation, students typically prepare for the Qualifying Exam in the spring and summer of their second year. The exam preparation will be fully focused on mastery of the lists and the selected fields, including the more specialized one leading to the dissertation.
The written exams are usually taken during the fifth semester.
Q: How do I add an outside committee member to my PhD committee?
A: According to the provided documentation, it is recommended that you consult with your chair and contact the DGS (Departmental Graduate Studies) office to update the appropriate records if you decide to bring in an outside reviewer or change your committee.

To add an outside committee member, follow these steps:

  1. Discuss with your chair: Share with your chair the reasons why you believe an external reader would be beneficial for your dissertation research.
  2. Identify potential candidates: Look for graduate faculty members from other departments who have expertise relevant to your research area.
  3. Obtain approval from the DGS office: Inform the DGS office of your intention to add an outside committee member and provide any necessary documentation, such as a brief explanation of why you think this would be beneficial.
    Please note that the department encourages outside members to serve on dissertation committees if it is deemed necessary for the research. However, ultimately, the decision to add an outside committee member should be made in consultation with your chair and the DGS office.
    If you have any further questions or concerns, please don’t hesitate to ask!
    Q: What can you tell me about the MATC portfolio?
    A: According to the provided context (documentation), the MATC portfolio is a digital portfolio that represents your work in the field of technical communication. It’s a three-fold audience and purpose, which means it serves as a professional conversation starter for potential employers or industries you want to enter, while also being assessed by your capstone course instructor and an ad hoc committee of TCR faculty.
    The MATC portfolio is a requirement for the Master of Arts in Technical Communication (MATC) program.

Do all of you get as embarrassed as I do, watching your first day of teaching as you prepare for class day two, and reading the transcript from the video? #embarrassing
I understand why it’s a good idea; I make my students watch their own presentations because it’s really helpful for them. And the notes I take rewatching last class always makes my next class better, but #bestpractices aren’t always easy.
I’m not sharing the full video or .vtt file here (that’s just for the students and me), but here’s the PowerPoint slideshow for ENGL 4367/5373 (Instructional Design for Technical Communicators), if you’re curious:

https://geoff.sauer.studio/wp-content/podcasts/engl_4367+5373_first_day_slideshow.pdf

California’s SB 1047 is a clear example of why (1) we need better laws about technology in this country, and (2) our current legislators are incompetent at writing them.
This proposed law (which passed the Assembly, and may pass the California Senate tomorrow) would make open-source AI technologies stupidly expensive, and subject to fines for what end users do with them (much later). It’s a clear example of how one should not write technology public policy.
Here’s hoping it fails tomorrow, or that Governor Newsom doesn’t sign it into law. It would certainly hamper my research.

So. You know I’ve been looking at how my GenAI ( https://ai.sauer.studio/ ) can help users get information they need from instruction manuals.
This week saw exciting new LLM models, like Hermes 3 (which has notable skill with languages). Working over the weekend, I loaded the handbooks of Texas Tech’s TCR in-person and online MA and PhD programs, told the new model to speak to me first in English, then French, Yorùbá (a language from southern Nigeria), and Hindi.
I asked it to answer questions about the graduate programs in those languages. It first reads the manuals (written solely in English). Then it generates clear, correct summary answers to questions in those languages, providing hypertext links to the correct pages in the source documents.
This promises to improve the user experience of documentation quite a bit for audiences with limited language skills.
My French is passable; I had to use machine translation for the Yorùbá and Hindi. But according to my tests this weekend, this system can actually work. It’s better in French and Yorùbá than Hindi, but that’s a result of the relatively small Hermes 3 model I’m using here (with funding, I’ll be able to run larger LLM models, and perhaps achieve results which will lead to clear recommendations for industry and the academy). Next for testing: Spanish and Mandarin.
None of this has any cost, except for medium-capacity computers (I’m running on a MacBook Pro)—and the expertise. (The software is all free and open-source). It’s very expensive (in time / expertise) to build the first one, but much faster for the second and third, and easy after that.) Having faculty in Tech Comm learn this expertise ourselves, will, I think, be time well-invested. Avoiding OpenAI (GPT) and Anthropic (Claude) seems to be worth its weight in gold, given the problems everyone’s reporting with those systems. And it’s cheaper this way!
I’m excited to work with two colleagues (Bremen Vance and Guiseppe Getto) to explore how fine-tuning models will help technical communication develop ‘best practices’ for locally-hosted, open-source documentation assistants. We submitted our first scholarship on this topic last week. It’s exciting to explore real, practical uses for these emerging GenAI technologies which have heretofore been mostly ‘undisciplined.’

Geoff Sauer is an American professor and new media theorist who researches technologies including open source software and collaborative multimedia development in the context of the history of publishing.

Copyright © 2022-26 by
Geoffrey Sauer. All rights reserved.

 

QR code