|
import gradio as gr |
|
import duckdb |
|
from langchain_community.embeddings import HuggingFaceEmbeddings |
|
from langchain_community.vectorstores import DuckDB |
|
|
|
conn = duckdb.connect('your_database.duckdb') |
|
|
|
embedding_function = HuggingFaceEmbeddings() |
|
vector_store = DuckDB( |
|
connection=conn, |
|
embedding=embedding_function) |
|
|
|
|
|
class User: |
|
def __init__(self, phone: str, features: str): |
|
self.phone = phone |
|
self.features = features |
|
def create(self): |
|
vector_store.add_texts([f'#features\n{self.features}\n\n#phone\n{self.phone}']) |
|
def search(self): |
|
return vector_store.similarity_search(self.features, k=1)[0].page_content |
|
|
|
def greet(a, b, c): |
|
u = User(a, b) |
|
if c: |
|
return u.search() |
|
u.create() |
|
return 1 |
|
|
|
|
|
demo = gr.Blocks() |
|
with demo: |
|
p = gr.Textbox() |
|
f = gr.Textbox() |
|
with gr.Row(): |
|
btn = gr.Button("insert") |
|
btn2 = gr.Button("query") |
|
n = gr.Textbox() |
|
btn.click(greet, inputs=[p, f, gr.Number(value=0, visible=False)], outputs=[n]) |
|
btn2.click(greet, inputs=[p, f, gr.Number(value=1, visible=False)], outputs=[n]) |
|
|
|
demo.launch(auth=("username", "password")) |