RAG (retrieval-augmented generation) -- as one way to implement generative AI -- is something easy for us libraries to get our heads around because the process is very much like the impementation of our discovery systems:
1. create content
2. index content
3. query content
4. return response
While such is the basic RAG recipe, here I will outline a way I have implemented it. You can cut to the case by perusing a temporary README file as well an advanced chat session on cataloging. [1, 2]
First create a set of content to be indexed. In this case I created a directory filled with plain text files -- chapters from Jane Austen's Emma. [3]
Next, index the content using OpenAI's API. (See index.py [4]) The script reads each file in the configured directory and sends it off to OpenAI. OpenAI indexes ("vectorizes") the content, returns the index, and it is cached for future use.
Third, you can query the index. [5] One can enter just about anything desired, and the results ought to rooted in the index content -- nothing else. Here is a tiny chat:
$ ./chat.py
Ask anything: Who is Emma?
Emma is a young woman who is described as handsome, clever, and
rich. She has lived a comfortable life with very little distress
or vexation. Emma is the youngest daughter in her family, with an
affectionate and indulgent father. She has been the mistress of
her father's house since her sister's marriage. Emma had a
governess who was like a mother to her, and she had a close
relationship with her. Emma is portrayed as having the power to
have her own way and a tendency to think highly of herself,
though these traits are not seen as significant issues by her at
the moment.
Ask anything: In a sentence, what does Emma like to do?
Emma likes to spend time with Frank Churchill, assist him with
tasks, and engage in conversations with him.
Ask anything: How old is Frank Chirchill?
Frank Churchill is around three or four-and-twenty years old.
Ask anything: Where does the story take place?
The story takes place in a room where Mrs. Martin and two girls
are present, engaging in conversation and reminiscing about past events.
Ask anything: What is a synopisis of the story?
The story follows Emma as she navigates social interactions and
relationships in her community. She becomes involved in a
situation where her friend Harriet is misled by Frank Churchill's
behavior. Emma reflects on her role in encouraging Harriet's
feelings and realizes she should have intervened to prevent any
misunderstandings. The narrative also delves into Mr. Knightley's
suspicions regarding Frank Churchill's intentions towards Emma
and Jane Fairfax. Themes of friendship, social dynamics, and
self-awareness are explored among the characters.
Ask anything: ^D
Okay, bye bye, and thank you.
The results are not perfect, but what indexing/searching process is?
The results, such as the ones above, are nice, but they beg the question, "From where did the answers originate? Show me citations." This problem is easily addressed through the use of metadata. More specifically, when indexing ("vectorizing") one can assoicate things like authors, titles, dates, genres, types, etc. to indexed items. Then, when results are returned, it is possible to learn what documents were used to formulate responses and include citations in the output.
For example, I collected about 136 journal articles on the topic of cataloging. I indexed them using OpenAI, and I created a query interface. Below are snippets from an example chat. Notice how each is assoicated with one or more author/title combinations -- pointers to the articles whence the answers were generated:
What is the role of cataloging in libraries?
Cataloging in libraries involves creating bibliographic records for
various resources, including books and online materials, to facilitate
the discovery and access of these resources by library users. Catalogers
are responsible for organizing and describing library materials,
ensuring that they are accurately represented in the library's catalog.
The role of cataloging has evolved with the introduction of automation
and technological advancements, leading to changes in the tools and
resources used by catalogers. Some libraries also outsource certain
cataloging functions, such as copy cataloging and cataloging of
foreign-language materials. Overall, cataloging plays a crucial role in
ensuring that library users can easily find and access the resources
they need.
References:
1. Liaising the Catalog: Collaborating Across Library Departments to
Promote Successful Discoverability through Enhanced Cataloging / Busch,
Tammie (2023.0) (5)
2. Catalogers in Academic Libraries: Their Evolving and Expanding Roles
/ Buttlar, Lois (1998.0) (3)
How did OCLC effect the practice of library cataloing?
OCLC had a significant impact on the practice of library cataloging. It
provided a valuable resource for cataloging data, allowing libraries to
find cataloging copy for various types of materials. Many libraries
relied on OCLC as their primary source of cataloging copy, which helped
improve the efficiency and effectiveness of their cataloging processes.
OCLC's data base also played a role in interlibrary loan,
preacquisitions verification, and cataloging data. Overall, OCLC's
services had a positive effect on library cataloging practices.
References:
1. Liaising the Catalog: Collaborating Across Library Departments to
Promote Successful Discoverability through Enhanced Cataloging / Busch,
Tammie (2023.0) (3)
2. A Survey on the Outsourcing of Cataloging in Academic Libraries /
Libby, Katherine A. (1997.0) (2)
3. The Availability of Cataloging Copy in the OCLC Data Base / Metz,
Paul (1980.0) (1)
4. An Overview of the Current State of Linked and Open Data in
Cataloging / Ullah, Irfan (2018.0) (1)
5. Bade, David. The Creation and Persistence of Misinformation in Shared
Library Catalogs: Language and Subject Knowledge in a Technological
Era. Champaign-Urbana, Ill.: Graduate School of Library and Information
Science, Univ. of Illinois (Occasional Papers, no. 211), 2002. 33p. $8
(ISBN 087845120X). / Bland, Robert (2002.0) (1)
Finally, processes such as the ones outlined above could be applied to many different types of library content: MARC records, PNX files, the output of OAI-PMH harvests, LibGuides, exhibits, policies and proceedures, etc. I'm not saying the results are better, but I am saying the ways to query the content are MUCH easier, and the results are MUCH more readable.
Finally, finally, you can temporarily download the whole of these sketches as a single zip file. [7]
Links
[1] README - https://distantreader.org/tmp/llamaindex-sketches/readme.txt
[2] cataloing chat - https://distantreader.org/tmp/llamaindex-sketches/cataloging%20chat.txt
[3] Jane Austen's Emma - https://distantreader.org/tmp/llamaindex-sketches/corpus/
[4] index.py - https://distantreader.org/tmp/llamaindex-sketches/bin/index.py
[5] chat.py - https://distantreader.org/tmp/llamaindex-sketches/bin/chat.py
[6] articles - See the cache and txt directories of a Reader study carrel: https://bit.ly/48Ec4NQ
[7] zip file - https://distantreader.org/tmp/llamaindex-sketches/llamaindex-sketches.zip
--
Eric Morgan <[log in to unmask]>
University of Notre Dame
|