Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-base-en-v1.5")
но индексация заняла много времени.
Теперь я использую это
model_name="distilbert-base-uncased"
эта модель "distilbert-base-uncased" уменьшила время моего индексирования, но ответы я получаю по моим запросам не очень хорошие результаты. Кроме того, время обработки запроса увеличивается (от 1 до 3 минут).
Я хочу улучшить время обработки запроса и получить более качественные ответы. Я новичок в этой области (LLM), поэтому прошу прощения, если мое объяснение неясно.
Мой результат с указанием времени:
Начало чтения документов...
Время загрузки документа: 38,18 секунды
Чтение документа завершено.
Настройка встраивания и языковой модели...
Нет найдена модель преобразователей предложений по названию дистиллят-база-без оболочки. Создание новой модели с объединением средних значений.
Время, затраченное на встраивание модели и настройку языковой модели: 1,84 секунды.
Настройка модели завершена.Начало создания индекса...
Время, затраченное на создание индекса: 305,35 секунды.
Создание индекса завершено.
Введите запрос (или введите «exit», чтобы выйти): что такое дженерики, и дайте мне пример программы для универсальных классов?
Хотите продолжить? этот запрос? (да, чтобы продолжить, нет, чтобы пропустить): да
Ответ: Возможность .....
Запрос выполнен за 100,83 секунды.
Время начала: 22 ноября 2024 г. 16:59:49
Время окончания: 22 ноября 2024 г. 17:01:29
Код: Выделить всё
import time
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.llms.ollama import Ollama
def log_time(start_time, action):
"""Helper function to log the time taken for a specific action."""
elapsed_time = time.time() - start_time
print(f"Time taken for {action}: {elapsed_time:.2f} seconds")
return elapsed_time
# Load documents from the 'data' directory
def load_documents(directory):
print("Starting to read documents...")
start_time = time.time() # Start time for document loading
documents = SimpleDirectoryReader(directory).load_data()
log_time(start_time, "document loading")
print("Document reading completed.")
return documents
# Set up embedding model and language model
def setup_models():
print("Setting up the embedding and language models...")
start_time = time.time() # Start time for model setup
Settings.embed_model = HuggingFaceEmbedding(model_name="distilbert-base-uncased")
Settings.llm = Ollama(model="llama3", request_timeout=3600.0)
log_time(start_time, "embedding model and language model setup")
print("Model setup completed.")
# Create an index from the loaded documents
def create_index(documents):
print("Starting index creation...")
start_time = time.time() # Start time for index creation
index = VectorStoreIndex.from_documents(documents)
log_time(start_time, "index creation")
print("Index creation completed.")
return index
# Query the index
def query_engine_loop(query_engine):
while True:
user_query = input("Enter your query (or type 'exit' to quit): ")
if user_query.lower() == 'exit':
print("Exiting the query engine.")
break
confirm = input("Do you want to proceed with this query? (yes to proceed, no to skip): ").strip().lower()
if confirm == 'yes':
start_time = time.time() # Start time for query execution
response = query_engine.query(user_query)
end_time = time.time() # End time for query execution
print("Response:", response)
print(f"Query executed in {end_time - start_time:.2f} seconds.")
print(f"Start Time: {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(start_time))}")
print(f"End Time: {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(end_time))}")
elif confirm == 'no':
print("Query skipped.")
else:
print("Invalid input. Please type 'yes' or 'no'.")
def main():
# Start by loading documents
documents = load_documents("data")
# Setup models
setup_models()
# Create index
index = create_index(documents)
# Create a query engine from the index
query_engine = index.as_query_engine()
# Start querying loop
query_engine_loop(query_engine)
if __name__ == "__main__":
main()
Подробнее здесь: https://stackoverflow.com/questions/792 ... th-llama-i