Spaces:
Sleeping
Sleeping
File size: 4,225 Bytes
6b43b0b f68fb03 5ed0967 f68fb03 40c0bf4 6b43b0b f68fb03 6b43b0b f68fb03 6b43b0b f68fb03 6b43b0b f68fb03 7603e25 d47acd6 6b43b0b f68fb03 6b43b0b f68fb03 40c0bf4 ca15e30 6b43b0b f68fb03 5ed0967 f68fb03 5ed0967 6b43b0b f68fb03 5ed0967 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# import os
# import gradio as gr
# import numpy as np
# from transformers import AutoTokenizer, AutoModel
# import time
# # :white_check_mark: Setup environment
# os.makedirs(os.environ.get("HF_HOME", "./hf_cache"), exist_ok=True)
# hf_token = os.environ.get("HF_TOKEN")
# if not hf_token:
# raise EnvironmentError(":x: Environment variable HF_TOKEN is not set.")
# # :white_check_mark: Load model and tokenizer
# text_tokenizer = AutoTokenizer.from_pretrained(
# "nomic-ai/nomic-embed-text-v1.5",
# trust_remote_code=True,
# token=hf_token,
# cache_dir=os.environ["HF_HOME"]
# )
# text_model = AutoModel.from_pretrained(
# "nomic-ai/nomic-embed-text-v1.5",
# trust_remote_code=True,
# token=hf_token,
# cache_dir=os.environ["HF_HOME"]
# )
# # :white_check_mark: Embedding function
# def get_text_embeddings(text):
# """
# Converts input text into a dense embedding using the Nomic embedding model.
# These embeddings are used to query Qdrant for semantically relevant document chunks.
# """
# inputs = text_tokenizer(text, return_tensors="pt", padding=True, truncation=True)
# outputs = text_model(**inputs)
# embeddings = outputs.last_hidden_state.mean(dim=1)
# return embeddings[0].detach().numpy()
# # :white_check_mark: Gradio interface function
# def embed_text_interface(text):
# strt_time=time.time()
# embedding = get_text_embeddings(text)
# print(f"Total time taken by nomic to embed: {time.time()-strt_time}")
# return str(embedding)
# # :white_check_mark: Gradio UI
# interface = gr.Interface(
# fn=embed_text_interface,
# inputs=gr.Textbox(label="Enter text to embed", lines=5),
# outputs=gr.Textbox(label="Embedding vector"),
# title="Text Embedding with Nomic AI",
# description="Enter some text, and get its embedding vector using Nomic's embedding model."
# )
# # :white_check_mark: Launch the app
# if __name__ == "__main__":
# interface.launch()
import os
import gradio as gr
import numpy as np
from transformers import AutoTokenizer, AutoModel
import time
import torch
# :white_check_mark: Setup environment
os.makedirs(os.environ.get("HF_HOME", "./hf_cache"), exist_ok=True)
hf_token = os.environ.get("HF_TOKEN")
if not hf_token:
raise EnvironmentError(":x: Environment variable HF_TOKEN is not set.")
# Check for GPU availability
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"Using device: {device}")
# :white_check_mark: Load model and tokenizer
text_tokenizer = AutoTokenizer.from_pretrained(
"nomic-ai/nomic-embed-text-v1.5",
trust_remote_code=True,
token=hf_token,
cache_dir=os.environ["HF_HOME"]
)
text_model = AutoModel.from_pretrained(
"nomic-ai/nomic-embed-text-v1.5",
trust_remote_code=True,
token=hf_token,
cache_dir=os.environ["HF_HOME"]
).to(device) # Move model to GPU if available
# :white_check_mark: Embedding function
def get_text_embeddings(text):
"""
Converts input text into a dense embedding using the Nomic embedding model.
These embeddings are used to query Qdrant for semantically relevant document chunks.
"""
inputs = text_tokenizer(text, return_tensors="pt", padding=True, truncation=True).to(device) # Move inputs to same device as model
with torch.no_grad(): # Disable gradient calculation for inference
outputs = text_model(**inputs)
embeddings = outputs.last_hidden_state.mean(dim=1)
print(embeddings[0].detach().cpu().numpy())
return embeddings[0].detach().cpu().numpy()
# :white_check_mark: Gradio interface function
def embed_text_interface(text):
strt_time = time.time()
embedding = get_text_embeddings(text)
print(f"Total time taken by nomic to embed: {time.time()-strt_time}")
return embedding
# :white_check_mark: Gradio UI
interface = gr.Interface(
fn=embed_text_interface,
inputs=gr.Textbox(label="Enter text to embed", lines=5),
outputs=gr.Textbox(label="Embedding vector"),
title="Text Embedding with Nomic AI",
description="Enter some text, and get its embedding vector using Nomic's embedding model."
)
# :white_check_mark: Launch the app
if __name__ == "__main__":
interface.launch() |