用Llama_Index、OpenAI GPT-4和ChromaDB创建您的第一个RAG应用 😊, 🤖, 🎉
检索增强生成(RAG)是一种创新的方法,结合了信息检索和生成模型的优势。在这篇博客中,我们将指导您使用Llama_Index框架、OpenAI GPT-4聊天模型、OpenAI的嵌入模型和ChromaDB进行向量存储来构建您的第一个RAG应用程序。这个应用程序将允许用户通过终端与之交互,提供一种对话式体验。
先决条件
在我们开始之前,请确保您已经:
- Python 3.7或更高版本
- OpenAI API Key: 在OpenAI上注册API密钥。
- 需要的库:使用pip安装所需的库:
pip install llama_index openai chromadb
步骤1:设置您的环境
创建一个新的Python文件,例如rag_chatbot.py,并通过导入必要的库开始:
import os
import openai
import llama_index as li
import chromadb
from chromadb.config import Settings
步骤 2:配置 OpenAI 和 ChromaDB
设置您的OpenAI API密钥并初始化ChromaDB以存储嵌入值:
# Set your OpenAI API key
openai.api_key = 'your_openai_api_key'
# Initialize ChromaDB
chroma_client = chromadb.Client(
Settings(chroma_db_impl="duckdb+parquet", persist_directory="chroma_db")
)
collection = chroma_client.create_collection(name="document_vectors")
步骤3: 加载数据并对其进行索引
创建一个从文件夹加载文档并使用Llama_Index对其进行索引的函数:
def load_and_index_data(folder_path):
index = li.SimpleDocumentIndex()
for filename in os.listdir(folder_path):
if filename.endswith('.txt'):
file_path = os.path.join(folder_path, filename)
with open(file_path, 'r') as file:
content = file.read()
index.add_document(content)
# Create embeddings using OpenAI's embedding model
embedding_response = openai.Embedding.create(
input=content,
model="text-embedding-ada-002")
vector = embedding_response['data'][0]['embedding']
# Store vector in ChromaDB
collection.add([content], [vector])
return index
# Load and index data from a folder
data_index = load_and_index_data('path_to_your_text_files')
步骤4:定义RAG管道
创建一个处理RAG流程的函数,检索相关文件并使用GPT-4生成响应。
def rag_pipeline(user_query):
# Retrieve relevant documents
retrieved_docs = data_index.retrieve(user_query, top_k=3)
# Prepare context for GPT-4
context = "\n".join(retrieved_docs)
# Generate a response with GPT-4
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "user", "content": context + "\n\n" + user_query}
]
)
return response['choices'][0]['message']['content']
步骤5: 创建一个对话循环
现在,我们将实现一个循环,允许用户输入查询并从机器人接收响应:
def chat_with_bot():
print("Welcome to the RAG Chatbot! Type 'exit' to stop the conversation.")
while True:
user_input = input("You: ")
if user_input.lower() == 'exit':
print("Goodbye!")
break
response = rag_pipeline(user_input)
print("Bot:", response)
# Start the chat loop
if __name__ == "__main__":
chat_with_bot()
第六步:运行您的RAG应用程序
在终端中运行您的Python脚本:
python rag_chatbot.py
你应该看到一个提示,欢迎你使用这个聊天机器人。你可以输入你的问题,机器人会根据索引文档和提供的语境来回答。
结论
恭喜!您已成功使用Llama_Index,OpenAI GPT-4和ChromaDB构建了您的第一个RAG应用程序。该应用程序演示了如何结合检索和生成来创建智能对话代理。
请随意扩展这个项目,通过添加更复杂的检索方法、改进用户界面或集成其他功能。可能性是无限的,通过RAG,你可以创建强大的应用程序,充分利用检索和生成的最佳功能。幸福编码!
RAG # ChatGPT # 绵羊指数 # GenAI # ChromaDB