Pesquisar

Discussão (0)1
Entre ou crie uma conta para continuar
Discussão
· Out. 19, 2024

Using EnsLib.SQL.Operation.GenericOperation

In the past, I've created custom SQL operations, but now I had something trivial to do, so I decided to take EnsLib.SQL.Operation.GenericOperation out for a spin. There's no example in the docs, so it was a little tricky. Here's what I ended up doing:

In my external database, I have 'mytable' with two fields 'id1' and 'id2'. Here are the pertinent Business Operation settings:

SQL: select id2 from mytable where id1 = ?
Input Parameters: [1] *id1
RequestClass: Ens.StringRequest
ResponseClass: MyResponseClass

To look up 'id2' for the row where 'id1' is "abc", I set 'StringValue' of my request to a JSON string: {"id1":"abc"}

For the result, 'MyResponseClass' has one property 'id2', i.e. identical to my select clause. The way I read the docs, it should be possible to get the result back as JSON in an 'Ens.StreamContainer', but I couldn't get this to work. Has anybody else had better luck?

2 Comments
Discussão (2)2
Entre ou crie uma conta para continuar
Artigo
· Out. 19, 2024 3min de leitura

Mi aproximación personal a los vectores

Motivado por comentarios personales de @Edilson Eberle Carvalho  y una excelente
presentacion de @Michael Braam 
relacionada con la Búsqueda Vectorial me gustaría compartir
mi aproximación personal a los Vectores.

Cuando empecé y me encontré con vectores de 256, 384 y más de 1200 dimensiones, me sentí perdido.
Sin embargo mi ejemplo
Vector-inside-IRIS  - una simplificación de iris-vector-search  - funcionó bien.
 

Para entender la mecánica que hay detrás, he decidido empezar por pasos pequeños.
Nuestras 3 dimensiones comunes describen bastante bien nuestro mundo físico.
Incluso la media 4ª dimensión (sin negativos) añadida por Einstein no es difícil de seguir.
La teoría cosmológica de cuerdas con 0 a 11+ dimensiones era una verdadera frontera para mí.

Así que volvamos al principio : => 2 dimensiones son suficientes para un principiante.
Las coordenadas geográficas proporcionan un buen punto de partida con suficientes datos de prueba.
La función VECTOR_COSINE() fue mi objetivo principal en mi ejemplo de geo-vector-search

El rango de resultados de -1 a +1 es fácil de interpretar en un mapa proyectado casi plano.
Eso es matemática básica y su transposición a una dimensión adicional no es un milagro.

Pero, ¿qué pasa con un centenar de dimensiones

 

;#1
-.0104943, .01472898, .07107521, .07168121, -.0937807, .05828459, .04451195, -.1045385, -.0110124, -.0240547, -.0032111, -.0030188, -.0414225, -.1092015, .02203945, -.0129255, .14087346, .04734043, -.0181046, -.0458297, .02323769, .02859951, .01124321, .00857456, -.0049756, -.0144282, -.0846236, -.0284645, -.0147692, -.0989931, .04880870, .01899284, -.0176833, .04763242, -.0808972, -.0604988, .05757499, -.0638228, .04217084, .03707900, .03757081, .03086806, .02773610, .02082979, -.0495735, -.0337784, -.0438372, -.0827000, -.0018084, -.0072785, -.0797550, -.0055747, -.0551242, -.0918905, .01140710, -.0115834, -.0088469, -.0445509, .02972822, .04385065, .04125113, .01189815, .01809763
;#2
-.0340279, -.0930349, -.0356242, .03200291, .07393958, -.0164658, -.0218968, .01392244, -.0069597, .02677908, -.0800164, .07227557, -.0430033, -.1134698, -.0561500, -.0520939, -.0306403, .00750979, -.0345837, .03335380, -.0438071, -.0088005, .03423582, .00794844, .01172804, .05204785, .04179215, .01768089, -.0489745, -.0031708, -.0349655, -.0482467, .08090461, -.0596610, -.0565769, -.0043313, .01015284, .07152537, .04189436, -.0475862, -.0171517, .03899634, -.0705699, -.1133416, .08019342, .02138555, .01466019, .00184080, -.0905641, -.1039420, -.0290395, .02753796, .01674868, -.0259464, -.0107869, -.0407411, -.0120343, -.0636389, .00047146, .01514394, -.0694578, -.0204190, -.0024446
;#3
.00350692, .09432639, .01641871, .09951058, .10459023, .00019239, -.0823584, -.0022799, -.0227801, -.0023362, -.0397562, .07449327, -.1137044, .09173037, .08620572, -.0881805, -.0111093, -.0316556, -.0044012, -.1248759, -.0897788, .03191807, -.0147239, -.0198379, -.0849955, -.0026861, .02628867, -.0523788, -.0398543, -.0080245, .06736382, .01456158, .04700677, -.0171667, -.0217174, .06761254, -.0070750, .02879706, .01109632, .02541129, -.0384420, .00410159, .05145533, .06493697, -.0924961, -.0422163, -.0739539, .06107471, .06070494, -.0044191, .00238501, -.0182966, .03546700, .05925614, -.0361021, .09686610, .02930910, .01282224, .02953721, -.0526526, .03977891, .00501585, .00717564

El ejemplo de aquí arriba está acortado para facilitar la lectura

Después de pensarlo un rato he encontrado una imagen personal:

  • Cuando busco un objetivo en Google Maps que no está a la vuelta de la esquina se me ofrecen varias rutas.
  • la más corta, la más rápida, la que menos consume, transporte público, ... 
  • y elijo según mis necesidades
  • interpretando las dimensiones de mis vectores como pasos intermedios numerados hacia mi objetivo obtendría una imagen similar
  • Y mediante VECTOR_COSINE obtengo la mejor propuesta

Puede que los expertos en LLM se rían de mi simplificación.

Pero para mí, es una imagen que va más allá de las matemáticas abstractas y
las confusas teorías del lenguaje. Y creo que mi simple imagen basada en un proceso
de uso cotidiano en la conducción de automóviles ayuda a comprender
cómo se obtienen los resultados.

NOTA:
Aún no tengo ni idea de CÓMO se calculan esos vectores, siempre y cuando sea coherente.
Para mí era importante entender cómo funciona el emparejamiento. 

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Out. 19, 2024 4min de leitura

A minha abordagem pessoal aos Vectores

Motivado pelo feedback pessoal de @Edilson Eberle Carvalho  e  uma excelente
apresentação de @Michael Braam relacionada com a Pesquisa Vetorial,
gostaria de partilhar a minha abordagem pessoal aos Vectores.

Quando comecei e encontrei vectores com 256, 384 e mais de 1200 dimensões - senti-me perdido.
No entanto, o meu exemplo Vector-inside-IRIS - uma simplificação da iris-vector-search - funcionou bem.

Para compreender a mecânica que lhe está subjacente, decidi começar por pequenos passos.
As nossas 3 dimensões comuns descrevem muito bem o nosso mundo físico. Mesmo
a meia quarta dimensão (sem negativos) acrescentada por Einstein não é muito difícil de compreender.
A teoria cosmológica das cordas com 0 a 11+ dimensões era para mim uma verdadeira fronteira.

Voltemos ao início: => 2 dimensões são suficientes para um principiante.
As coordenadas geográficas constituem um bom ponto de partida com dados de teste suficientes.
A função VECTOR_COSINE() foi o meu principal objetivo no meu exemplo de geo-vector-search

A gama de resultados de -1 a +1 é fácil de interpretar num mapa projetado quase plano.
Isto é matemática básica e a sua transposição para uma dimensão adicional não é um milagre.

Mas e quanto a algumas centenas de dimensões?

;#1
-.0104943, .01472898, .07107521, .07168121, -.0937807, .05828459, .04451195, -.1045385, -.0110124, -.0240547, -.0032111, -.0030188, -.0414225, -.1092015, .02203945, -.0129255, .14087346, .04734043, -.0181046, -.0458297, .02323769, .02859951, .01124321, .00857456, -.0049756, -.0144282, -.0846236, -.0284645, -.0147692, -.0989931, .04880870, .01899284, -.0176833, .04763242, -.0808972, -.0604988, .05757499, -.0638228, .04217084, .03707900, .03757081, .03086806, .02773610, .02082979, -.0495735, -.0337784, -.0438372, -.0827000, -.0018084, -.0072785, -.0797550, -.0055747, -.0551242, -.0918905, .01140710, -.0115834, -.0088469, -.0445509, .02972822, .04385065, .04125113, .01189815, .01809763
;#2
-.0340279, -.0930349, -.0356242, .03200291, .07393958, -.0164658, -.0218968, .01392244, -.0069597, .02677908, -.0800164, .07227557, -.0430033, -.1134698, -.0561500, -.0520939, -.0306403, .00750979, -.0345837, .03335380, -.0438071, -.0088005, .03423582, .00794844, .01172804, .05204785, .04179215, .01768089, -.0489745, -.0031708, -.0349655, -.0482467, .08090461, -.0596610, -.0565769, -.0043313, .01015284, .07152537, .04189436, -.0475862, -.0171517, .03899634, -.0705699, -.1133416, .08019342, .02138555, .01466019, .00184080, -.0905641, -.1039420, -.0290395, .02753796, .01674868, -.0259464, -.0107869, -.0407411, -.0120343, -.0636389, .00047146, .01514394, -.0694578, -.0204190, -.0024446
;#3
.00350692, .09432639, .01641871, .09951058, .10459023, .00019239, -.0823584, -.0022799, -.0227801, -.0023362, -.0397562, .07449327, -.1137044, .09173037, .08620572, -.0881805, -.0111093, -.0316556, -.0044012, -.1248759, -.0897788, .03191807, -.0147239, -.0198379, -.0849955, -.0026861, .02628867, -.0523788, -.0398543, -.0080245, .06736382, .01456158, .04700677, -.0171667, -.0217174, .06761254, -.0070750, .02879706, .01109632, .02541129, -.0384420, .00410159, .05145533, .06493697, -.0924961, -.0422163, -.0739539, .06107471, .06070494, -.0044191, .00238501, -.0182966, .03546700, .05925614, -.0361021, .09686610, .02930910, .01282224, .02953721, -.0526526, .03977891, .00501585, .00717564

O exemplo aqui em cima foi encurtado para facilitar a leitura

Depois de pensar durante algum tempo, encontrei uma imagem pessoal:

  • Quando procuro um objetivo no Google Maps que não seja mesmo ao virar da esquina, recebo uma escolha de percursos.
  • O mais curto, o mais rápido, o que consome menos combustível, os transportes públicos, ... 
  • e faço uma escolha de acordo com as minhas necessidades
  • interpretando as dimensões dos meus vectores como passos intermédios numerados até ao meu objetivo, obteria uma imagem semelhante
  • E com VECTOR_COSINE obtenho a melhor proposta

Os especialistas em LLM podem rir-se da minha simplificação.
Mas, para mim, é uma imagem que ultrapassa a matemática abstrata e as teorias linguísticas confusas.
E acredito que a minha imagem simples, baseada num processo usado diariamente na condução
de um automóvel ajuda a compreender como os resultados são encontrados.

NOTA:
Ainda não faço ideia de COMO esses vectores são calculados, desde que sejam consistentes.
Era importante para mim perceber como funciona a correspondência. 

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Out. 19, 2024 4min de leitura

Ma propre approche des vecteurs

Motivé par les commentaires personnels de @Edilson Eberle Carvalho  et par 
une excellente présentation de @Michael Braam  concernant la recherche vectorielle,
j'aimerais partager mon approche personnelle des vecteurs.

Lorsque j'ai commencé et que j'ai rencontré des vecteurs à 256, 384 et plus de 1200 dimensions,
je me suis senti perdu.
Cependant, mon exemple
Vector-inside-IRIS - une simplification de ris-vector-search  - a bien fonctionné.
 

Afin de comprendre les mécanismes sous-jacents, j'ai décidé de commencer par de petites étapes.
Nos trois dimensions habituelles décrivent très bien notre monde physique.
Même la demi-quatrième dimension (sans négatif) ajoutée par Einstein n'est pas difficile à comprendre.
La théorie des cordes cosmologiques avec 0 à 11+ dimensions était pour moi une véritable frontière.


Revenons à nos moutons : => 2 dimensions sont suffisantes pour un débutant.
Les coordonnées géographiques fournissent un bon point de départ avec suffisamment de données de test.
La fonction VECTOR_COSINE() était ma cible principale dans mon exemple de 
geo-vector-search

La plage de résultats allant de -1 à +1 est facile à interpréter dans une carte projetée quasi plate.
C'est de la mathématique de base et sa transposition à une dimension supplémentaire n'est pas un miracle.

Mais qu'en est-il d'une centaine de dimensions ?

;#1
-.0104943, .01472898, .07107521, .07168121, -.0937807, .05828459, .04451195, -.1045385, -.0110124, -.0240547, -.0032111, -.0030188, -.0414225, -.1092015, .02203945, -.0129255, .14087346, .04734043, -.0181046, -.0458297, .02323769, .02859951, .01124321, .00857456, -.0049756, -.0144282, -.0846236, -.0284645, -.0147692, -.0989931, .04880870, .01899284, -.0176833, .04763242, -.0808972, -.0604988, .05757499, -.0638228, .04217084, .03707900, .03757081, .03086806, .02773610, .02082979, -.0495735, -.0337784, -.0438372, -.0827000, -.0018084, -.0072785, -.0797550, -.0055747, -.0551242, -.0918905, .01140710, -.0115834, -.0088469, -.0445509, .02972822, .04385065, .04125113, .01189815, .01809763
;#2
-.0340279, -.0930349, -.0356242, .03200291, .07393958, -.0164658, -.0218968, .01392244, -.0069597, .02677908, -.0800164, .07227557, -.0430033, -.1134698, -.0561500, -.0520939, -.0306403, .00750979, -.0345837, .03335380, -.0438071, -.0088005, .03423582, .00794844, .01172804, .05204785, .04179215, .01768089, -.0489745, -.0031708, -.0349655, -.0482467, .08090461, -.0596610, -.0565769, -.0043313, .01015284, .07152537, .04189436, -.0475862, -.0171517, .03899634, -.0705699, -.1133416, .08019342, .02138555, .01466019, .00184080, -.0905641, -.1039420, -.0290395, .02753796, .01674868, -.0259464, -.0107869, -.0407411, -.0120343, -.0636389, .00047146, .01514394, -.0694578, -.0204190, -.0024446
;#3
.00350692, .09432639, .01641871, .09951058, .10459023, .00019239, -.0823584, -.0022799, -.0227801, -.0023362, -.0397562, .07449327, -.1137044, .09173037, .08620572, -.0881805, -.0111093, -.0316556, -.0044012, -.1248759, -.0897788, .03191807, -.0147239, -.0198379, -.0849955, -.0026861, .02628867, -.0523788, -.0398543, -.0080245, .06736382, .01456158, .04700677, -.0171667, -.0217174, .06761254, -.0070750, .02879706, .01109632, .02541129, -.0384420, .00410159, .05145533, .06493697, -.0924961, -.0422163, -.0739539, .06107471, .06070494, -.0044191, .00238501, -.0182966, .03546700, .05925614, -.0361021, .09686610, .02930910, .01282224, .02953721, -.0526526, .03977891, .00501585, .00717564

L'exemple ci-dessus a été raccourci pour plus de lisibilité

Après y avoir réfléchi pendant un certain temps, j'ai trouvé une image personnelle :

  • Lorsque je cherche un objectif dans Google Maps qui n'est pas juste au coin de la rue, j'obtiens un choix d'itinéraires proposés.
  • le plus court, le plus rapide, celui qui consomme le moins de carburant, les transports publics, ...
  • et je fais un choix en fonction de mes besoins
  • en interprétant les dimensions de mes vecteurs comme des étapes intermédiaires numérotées vers ma cible, j'obtiendrais une image similaire.
  • Et en utilisant VECTOR_COSINE, j'obtiens la meilleure proposition.

Les spécialistes du LLM peuvent rire de ma simplification.
Mais pour moi, c'est une image qui va au-delà des mathématiques abstraites
et des théories linguistiques confuses. Et je crois que cette image simple,
basée sur un processus utilisé quotidiennement dans la conduite automobile,
aide à comprendre comment les résultats sont trouvés.

REMARQUE :
je n'ai encore aucune idée de la manière dont ces vecteurs sont calculés du moment qu'ils sont
cohérents. Il était important pour moi de comprendre comment fonctionne l'appariement. 

Discussão (0)1
Entre ou crie uma conta para continuar