用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

2024-10-29 04:20:00 AI中文站翻译自原文