RAG与LLM原理及实践(5)--- Chroma query 源码分析

背景

今天开始揭开 Chroma query 的实现内幕,如果你之前没有自己看过,读完后,你的内功将得到增强。做到以不变应万变,力求万事成竹于胸。 Chroma  query 读完后,你将对 vector db 的 query 逻辑有深刻的认识。世间万物本质大都大同小异,你或许有一种 独上高楼,望尽天涯路 的感觉。话不多说,直接开始分享干货。

直观的代码调用

无论是chroma,还是其他vector db,基本最简单的调用逻辑就是下面几行代码:

# load the document and split it into chunks
loader = TextLoader("/RAG1/data/mysql2.txt", encoding='utf-8')
documents = loader.load()

# split it into chunks
text_splitter = CharacterTextSplitter(chunk_size=200, chunk_overlap=0e)

docs = text_splitter.split_documents(documents)

# create the open-source embedding function
embedding_function = OllamaEmbeddings(model='nomic-embed-text')

# load it into Chroma
db = Chroma.from_documents(docs, embedding_function)

# query it
query = "SQL中如何批量插入"
docs = db.similarity_search_with
03-29
### RAGLLM 的实施教程 #### 什么是RAG? 检索增强生成(Retrieval-Augmented Generation, RAG)是一种结合了信息检索和自然语言生成的方法,旨在通过从外部数据库中检索相关信息来提高生成质量。这种方法能够有效解决传统大语言模型可能存在的幻觉问题,即生成的内容不符合事实的情况。 #### 实施方法 为了实现RAG,通常需要以下几个组件: - **向量存储**:用于保存文档的嵌入表示,以便快速查找相似内容。 - **检索器**:负责从向量存储中找到查询最相关的文档片段。 - **生成器**:利用检索到的信息作为上下文输入给LLM,从而生成更精确的回答。 下面是一个简单的Python代码示例展示如何构建基本的RAG流程: ```python from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.llms import OpenAI from langchain.chains import RetrievalQA # 初始化OpenAI Embedding服务 embeddings = OpenAIEmbeddings() # 创建文本分割器实例 text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=0) # 假设我们有一组文档列表叫做texts texts = ["这是一篇关于人工智能的文章...", "..."] docs = text_splitter.create_documents(texts) # 构建Chroma向量库 db = Chroma.from_documents(docs, embeddings) # 定义问答链路 qa_chain = RetrievalQA.from_chain_type( llm=OpenAI(), chain_type="stuff", retriever=db.as_retriever() ) query = "请告诉我有关人工智能的知识" result = qa_chain.run(query) print(result) ``` 此脚本展示了如何使用LangChain框架搭建一个简易版的RAG应用[^2]。 #### 参考资料推荐 对于希望深入研究RAG技术及其实际操作的朋友来说,可以参考以下资源: - GitHub上的[simple-local-rag](https://github.com/kaiji8/simple-local-rag),该项目提供了完整的端到端解决方案,并且经过优化便于理解和部署[^3]。 - Awesome LLM Resources网站收集了大量的高质量链接指向各种主题下的最佳实践案例和技术文章[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PhoenixAI8

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值