Пытаюсь создать RAG со всем локальным. я застрял на использовании вложенийPython

Программы на Python
Ответить
Anonymous
 Пытаюсь создать RAG со всем локальным. я застрял на использовании вложений

Сообщение Anonymous »

Я пытаюсь создать RAG, я начинаю с того, что разбиваю документ на части, отправляю его в локально размещенную модель внедрения, получаю векторы обратно, а затем застреваю с частью FAISS.
Моя проблема в том, что все, что я нахожу, похоже, связано с объятием лица или чем-то еще, и материал langchain, похоже, ориентирован на это, поэтому я получаю свои встраивания из внешнего источника или имею проводить дни повторно запускаю код до тех пор, пока не получу полную загрузку модели, не сообщая мне, что хэш не совпадает, потому что он пытался загрузить только 98,4% из нее. зачем это делать, если у меня отличный сервер.
Вот мой код для проверки концепции
import requests
from langchain_community.document_loaders import PyPDFLoader
from langchain.chains import retrieval_qa, RetrievalQA
from langchain_community.vectorstores.faiss import FAISS
from langchain.text_splitter import RecursiveCharacterTextSplitter

lm_studio_endpoint = "http://127.0.0.1:1234"

def setup_qa_system(file_path):
# Load and split PDF documents
try:
loader = PyPDFLoader(file_path)
docs = loader.load_and_split()
except Exception as e:
print(f"Error loading PDF: {e}")
return None

# Split documents into smaller chunks
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=50)
chunks = text_splitter.split_documents(docs)

# Function to get embeddings
def get_embeddings(texts):
print(f"Getting embeddings for {len(texts)} texts.") # Debug output
try:
response = requests.post(f"{lm_studio_endpoint}/v1/embeddings", json={
"input": texts,
'model': 'text-embedding-granite-embedding-278m-multilingual'
})
response.raise_for_status()
embeddings_data = response.json().get('data')

# Extract embeddings from the response
embeddings = [item['embedding'] for item in embeddings_data]

print(f"Received {len(embeddings)} embeddings.") # Debug output
return embeddings
except requests.exceptions.RequestException as e:
print(f"Error getting embeddings: {e}")
return []

texts = [chunk.page_content for chunk in chunks] # Extract texts from chunks
print(f"Number of chunks: {len(chunks)}")
print(f"Number of texts being sent: {len(texts)}")

embeddings = get_embeddings(texts) # Get embeddings

# Check if embeddings were retrieved successfully
if not embeddings or len(embeddings) != len(chunks):
print(f"Error: Number of embeddings ({len(embeddings)}) does not match number of chunks ({len(chunks)}). Exiting setup.")
return None

# Create a list of (text, embedding) tuples
text_embeddings = list(zip(texts, embeddings))

# Create the FAISS vector store using the list of tuples
vector_store = FAISS.from_embeddings(text_embeddings, embeddings)#

Подробнее здесь: https://stackoverflow.com/questions/793 ... embeddings
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»